Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++/CLI Windows Forms

Войти
Регистрация
Восстановить пароль
 
Vib75
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 12
#1

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

05.11.2013, 15:35. Просмотров 892. Ответов 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 - C++/CLI WinForms
Доброго времени суток форумчане! Столкнулся с такой проблемой, создаю PictureBox (по нажатию на копку) выставляю все параметры, которые...

Создание и обработка события Process Exited - C++/CLI WinForms
Всем хай в форме имеется код Process^ myProcess = gcnew Process(); myProcess->Exited += gcnew System::EventHandler(this,...

Обработка события KeyPress компонентов TextBox - C++/CLI WinForms
Здравствуйте. Есть фрагмент кода: if(Char::IsControl(e->KeyChar)) { //<Enter>,<Backspace>,<Esc> if(e->KeyChar==(char)...

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

Передать значение в обработчике события для динамически созданного компонента - Delphi FireMonkey
Доброго времени суток камрады! Что-то туплю, а вернее, не хватает базы. Подскажите, как лучше быть в следующей ситуации: Создаю в...

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

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
Привет! Вот еще темы с ответами:

.NET 2.x Как передать в обработчик события значение программно созданного pictureBox? - C#
как передать в обработчик события значение программно созданного pictureBox? суть прилоения оно ищет в папке изображения, потом добавляет...

Вызов контекстного меню для динамически созданного компонента - Delphi
procedure addimg ; {прцедура добавления изображения на основную форму} begin pane:=Tpanel.Create(form2); pane.Parent:=form2 ; ...

Создание события для динамически созданного LinkLabel - Visual Basic .NET
Здравствуйте, Я столкнулся с проблемой события для щелчка по LinkLabel, созданной программным путем. Public 1Link As New LinkLabel...

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


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

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

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