Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Vib75
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 12
#1

Обработка события для программно созданного компонента - C++/CLI WinForms

05.11.2013, 15:35. Просмотров 909. Ответов 4
Метки нет (Все метки)

Добрый день!

В основной программе, в обработчике события при выборе пункта меню ToolStripMenuItem, создаю программно форму. На этой форме размещаю кнопку button1_map_maker. Подскажите, как реализовать обработчик события при нажатии на эту кнопку? Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// =================================== == НАЧАЛО ОБРАБОТЧИКА ВЫГРУЗКИ КАРТ =================================== ========================
private: System::Void картуToolStripMenuItem_Click(System ::Object^ sender, System::EventArgs^ e) 
{
Form^ form_map_maker = gcnew Form; // создаем форму
form_map_maker->Size = System:: Drawing::Size(330, 250);// устанавливаем размер формы 
form_map_maker->StartPosition = FormStartPosition::CenterScreen; //определяем начальное положение формы
form_map_maker->FormBorderStyle = System::Windows::Forms::FormBorderS tyle::FixedDialog; // определяем стиль формы (модальное, изменяемое по размеру и т.п.)
form_map_maker->Text = "Построить карту"; // определяем заглавный текст (название) формы
form_map_maker->HelpButton = false; // определяем, показывать или нет кнопку помощи на форме
form_map_maker->MaximizeBox = false; // определяем, показывать или нет кнопку "Развернуть на весь экран" на форме
form_map_maker->MinimizeBox = false; // определяем, показывать или нет кнопку "Свернуть" на форме
 
Button^ button1_map_maker = gcnew Button; // содаем компонент button1_map_maker
button1_map_maker->Location = Point(70,185); // определяем положение кнопки button1_map_maker на форме
button1_map_maker->Text = "ОК"; // определяем текст кнопки button1_map_maker
form_map_maker->Controls->Add( button1_map_maker ); // добавляем кнопку button1_map_maker на форму
 
form_map_maker->ShowDialog(); // показываем форму как модальное окно;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 15:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обработка события для программно созданного компонента (C++/CLI WinForms):

События для динамически созданного PictureBox
Доброго времени суток форумчане! Столкнулся с такой проблемой, создаю...

Обработка события KeyPress компонентов TextBox
Здравствуйте. Есть фрагмент кода: if(Char::IsControl(e->KeyChar)) { ...

Создание и обработка события Process Exited
Всем хай в форме имеется код Process^ myProcess = gcnew Process();...

Вызов события для программно созданного компонента
Добрый вечер! У меня программно создается вкладка с richtextbox. Как я могу...

Передать значение в обработчике события для динамически созданного компонента
Доброго времени суток камрады! Что-то туплю, а вернее, не хватает базы....

обработка OnChange для программно созданного edit
У меня есть ed:tedit и but:tbutton я их создал так: ed:=tedit(form1);...

4
Водяной Змей
Заблокирован
06.11.2013, 04:00 #2
1. Добавляем в код требуемый обработчик события.
C++
1
2
3
    private: System::Void button1_map_maker_Click(System::Object^  sender, System::EventArgs^  e) {
                 MessageBox::Show("Клик по кнопке.");
             }
2. Создаём делегат события Click (это должно делаться до добавления кнопки на форму):
C++
1
button1_map_maker->Click += gcnew EventHandler(this, &Form1::button1_map_maker_Click);
0
Vib75
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 12
06.11.2013, 08:50  [ТС] #3
Водяной Змей, спасибо огромное!
А теперь возникло у меня продолжение вопроса.
Как из этого моего обработчика закрыть эту форму?
На конструкцию

C++
1
2
3
4
private: System::Void button1_map_maker_Click(System::Object^  sender, System::EventArgs^  e) 
           {
                form_map_maker -> Close();
       }
компилятор говорит:

Ошибка 70 error C2065: form_map_maker: необъявленный идентификатор

И у меня на форме form_map_maker еще комбобокс, как из обработчика получить доступ к его SelectedIndex?
0
Водяной Змей
Заблокирован
06.11.2013, 10:00 #4
Вариант 1. Объявить объект Form^ form_map_maker глобально, т.е. вне каких-либо обработчиков событий (а инициализировать уже в картуToolStripMenuItem_Click).

Вариант 2.
C++
1
2
3
    private: System::Void button1_map_maker_Click(System::Object^  sender, System::EventArgs^  e) {
                 dynamic_cast<Form^>(dynamic_cast<Button^>(sender)->Parent)->Close();
             }
0
Vib75
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 12
06.11.2013, 10:20  [ТС] #5
Водяной Змей, вот гигантское спасибо!

Жаль я не могу "+" Вам в рейтинг, видимо так как новайс тут.
Я нуб в программировании, но вот Вашу рабочую конструкцию по варианту 2 сейчас по косточкам в книжках разберу. Очень полезный совет дали.
Еще раз спасибо!
0
06.11.2013, 10:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 10:20
Привет! Вот еще темы с решениями:

Как передать в обработчик события значение программно созданного pictureBox?
как передать в обработчик события значение программно созданного pictureBox?...

Вызов контекстного меню для динамически созданного компонента
procedure addimg ; {прцедура добавления изображения на основную форму}...

Создание события для динамически созданного LinkLabel
Здравствуйте, Я столкнулся с проблемой события для щелчка по LinkLabel,...

Создать обработчик события для динамически созданного NumericUpDown
Приветствую. Имеется несколько динамически созданных numericupdown-оф, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru