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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 12:56   #1
ToxaR
Новичок
Джуниор
 
Регистрация: 14.12.2010
Сообщений: 3
Вопрос Нужна помощ с событиями в VS C++

Проблема в следущем:

Создаю динамически несколь компонентов PictureBox:
Код:
PictureBox^ pctBox, ...;

pctBox = gcnew PictureBox;
pctBox->Location = Point(20+l, 20+k);
pctBox->Size = System::Drawing::Size(70, 65);
pctBox->Image = imageList1->Images[0];
pctBox->Click += gcnew System::EventHandler(this, &Form1::Buttons_Click);
panel2->Controls->Add(pctBox);
Вешаю на них (для всех одино и тоже событие) событие - должно в сообшении вывести на каком конкретно pctBox был клик:

Код:
void Buttons_Click (System::Object^ sender, System::EventArgs^ e)
 {	 
 MessageBox::Show("Нажатие на картинке", "Заголовок", MessageBoxButtons::OK, MessageBoxIcon::Error);
 }
Ни как не могу понять как мне с sender получить имя компонента.
Или может есть какойто другой способ?

ПС: Буду рад коду который может получать имена компонента и указание на материал которого я не знаю.

Последний раз редактировалось ToxaR; 14.12.2010 в 13:00.
ToxaR вне форума Ответить с цитированием
Старый 14.12.2010, 13:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Не знаю есть ли такое свойство но предполагаю что так:
Код:
void Buttons_Click (System::Object^ sender, System::EventArgs^ e)
 {	 
 MessageBox::Show("Нажатие на картинке", (PaintBox)sender->Name, MessageBoxButtons::OK, MessageBoxIcon::Error);
 }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2010, 13:35   #3
ToxaR
Новичок
Джуниор
 
Регистрация: 14.12.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение

(PaintBox)sender->Name
Нет такой код не работает. У sender есть метод toString но он выводит только тип вызываеюшего обьекта. А мне нужно именно имя этого обьекта или хотябы каието поля.

Вот и найдено решение!
Вопервых, для доступа к методам обьекта через sender нужно преобразовать sender в обьект нужного типа, в данном случае: ((PictureBox^)sender)->Name

Вовторых, у меня ошибка в коде - нехватает следушей строки: pctBox->Name= "PictureBox1";
Имя в " " должно быть уникальным для каждого обьекта, для предотвращения путаницы.
Из-за ее нехватки выводиться !пустое имя, тоесть имя отсуцтвует.

И наконец, не понятно как C++ Visual Studio 2005 дал возможность создавать обекты без имени Просто ужас. Если среда сама не подставляет по умолчанию стандартное имя и не ругаеться на создание обьектов с одинаковыми именами. Хотя они должны быть уникальны.

ПС: Теперь понятно почему всем известные ПО так глючат

Может комуто будет полезно, весь код.
Основной код:
Код:
PictureBox^ pctBox, ...;
String^ PbNeme;

PbName = "PictureBox" + l.ToString() + k.ToString;
pctBox = gcnew PictureBox;
pctBox->Name = PbName;
pctBox->Location = Point(20+l, 20+k);
pctBox->Size = System::Drawing::Size(70, 65);
pctBox->Image = imageList1->Images[0];
pctBox->Click += gcnew System::EventHandler(this, &Form1::Buttons_Click);
panel2->Controls->Add(pctBox);
И код метода:
Код:
void Buttons_Click (System::Object^ sender, System::EventArgs^ e)
 {	 
   String^ KlComp = ((PictureBox^)sender)->Name;

   MessageBox::Show("Нажатие на картинке " + KlComp, "Заголовок", MessageBoxButtons::OK, MessageBoxIcon::Error);
 }

Последний раз редактировалось ToxaR; 14.12.2010 в 16:42. Причина: Найдено правильное решение
ToxaR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощ по си firtonil Помощь студентам 0 16.05.2010 12:54
Нужна помощ )) Turpppp Общие вопросы Delphi 1 28.11.2009 20:15
Нужна помощ kondrat12 Свободное общение 12 13.10.2009 14:42