Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2013, 11:55   #1
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Вопрос Координаты матрицы

Здравствуйте.

Есть структура в классе GameField:
Код:
public struct Rect
{
	public Rectangle cell;
	public bool mine;
}
Далее создаю двумерный массив этих структур:
Код:
public Rect[,] Cells = new Rect[LENGTH, LENGTH];
В конструкторе класса подцепляю обработчик события:
Код:
Cells[i, j].cell.MouseDown += RectClick;
Сам обработчик:
Код:
public void RectClick(object sender, MouseButtonEventArgs e)
{
	//некие действия
}
Так вот, как мне узнать над каким элементом матрицы произошло событие, мне нужны координаты x, y матрицы.

Первое, что пришло в голову - это наследоваться от Rectangle и добавить эти самые координаты, но у Rectangle имеется модификатор sealed.

Помогите решить проблему, уже второй день не могу ничего придумать.
pashka_dos вне форума Ответить с цитированием
Старый 05.07.2013, 11:59   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
object sender
sender - это та самая ячейка, по которой кликнули. В структуру Rect следует добавить поле с координатами, а потом посмотреть их в sender'e
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 05.07.2013, 12:53   #3
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Вопрос

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
sender - это та самая ячейка, по которой кликнули. В структуру Rect следует добавить поле с координатами, а потом посмотреть их в sender'e
Добавил в структуру координаты:
Код:
public int x;
public int y;
А как теперь посмотреть их в sender'e?
pashka_dos вне форума Ответить с цитированием
Старый 05.07.2013, 18:36   #4
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
По умолчанию

Пробовал сделать так:

Код:
if (sender is Rect)
{
	((Rect)sender).x++;
}
Но вылетает ошибка:
"Не удается модифицировать результат распаковывающего преобразования"

Что это значит?
pashka_dos вне форума Ответить с цитированием
Старый 05.07.2013, 20:52   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Код:
Cells[i, j].cell.Tag = new Point(x,y); 
.....
// в обработчике онклик:
int x = ((Point)((Rectangle)sender).Tag).X;
int y = ((Point)((Rectangle)sender).Tag).Y;
Типа того
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 06.07.2013, 00:15   #6
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Радость

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Код:
Cells[i, j].cell.Tag = new Point(x,y); 
.....
// в обработчике онклик:
int x = ((Point)((Rectangle)sender).Tag).X;
int y = ((Point)((Rectangle)sender).Tag).Y;
Типа того
Спасибо Вам большое! Вы как всегда меня выручили
pashka_dos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мировые Координаты И Координаты Устройства lebedun Win Api 6 19.08.2012 14:47
Найти сумму наибольших элементов каждого столбца матрицы и их координаты. danteone Помощь студентам 2 21.05.2012 16:33
Первый элемент - размерность матрицы, остальные образуют строки этой матрицы Anastasiya_Pot Помощь студентам 2 10.04.2012 09:46
Преобразование одномерных координат массива в двумерные координаты матрицы nikol_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 05.05.2011 13:16
Координаты матрицы mazak Общие вопросы C/C++ 2 06.08.2009 16:55