Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обработать событие контрола дочерней формы, button_click например?? 
V
    Опции темы
gORik
Дата 11.5.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Код

            Form2 form2 = new Form2();
            form2.FormBorderStyle = FormBorderStyle.FixedDialog;
            form2.StartPosition = FormStartPosition.CenterScreen;
            form2.MaximizeBox = false;
            form2.MinimizeBox = false;
            form2.Controls["button1"].Text = "Ok";
            form2.ShowDialog();          


Есть форма с контролами, создаю ее обєкт. Как обработать событие контрола даной дочерней формы?? например событие button1_Click!?


PM MAIL ICQ   Вверх
-Mikle-
Дата 11.5.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Нуууу, можно так:
Код

form2.Controls["button1"].Click += new EventHandler(form2_button1_Click);

........
private void form2_button1_Click(object sender, EventArgs e)
{
    //...
}




--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
vponomarov
Дата 11.5.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 5
Всего: 12



Код

            Form2 form2 = new Form2();
            form2.FormBorderStyle = FormBorderStyle.FixedDialog;
            form2.StartPosition = FormStartPosition.CenterScreen;
            form2.MaximizeBox = false;
            form2.MinimizeBox = false;
            form2.Controls["button1"].Text = "Ok";
            frm.Controls["button1"].Click += new EventHandler(b1_Click);
            form2.ShowDialog();    

если нужно обработать какое-нить специфическое для контрола событие, используй явное приведение типов:
Код

((Button)frm.Controls["button1"]).Click += new EventHandler(b1_Click);


Добавлено через 46 секунд
-Mikle-, красавчег smile 
опередил меня...


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
gORik
Дата 11.5.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



спс за ответы..
у меня эта форма создается в обработчике события Клик другой кнопки(кнопки первой формы) :
Код

private void предметToolStripMenuItem_Click(object sender, EventArgs e)
{
            Form2 form2 = new Form2();
            form2.FormBorderStyle = FormBorderStyle.FixedDialog;
            form2.StartPosition = FormStartPosition.CenterScreen;
            form2.MaximizeBox = false;
            form2.MinimizeBox = false;
}


а обработчик в обработчике не хочет описывать..
PM MAIL ICQ   Вверх
vponomarov
Дата 11.5.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 5
Всего: 12



Цитата(gORik @  11.5.2008,  17:55 Найти цитируемый пост)
а обработчик в обработчике не хочет описывать.. 

что значит не хочет? smile 
все должно быть нормально.
не хочет компилиться или какая ошибка?


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
gORik
Дата 11.5.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



ну я пишу так и куча ерроров..
Код


        private void студентаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.FormBorderStyle = FormBorderStyle.FixedDialog;
            form2.StartPosition = FormStartPosition.CenterScreen;
            form2.MaximizeBox = false;
            form2.MinimizeBox = false;
            form2.Controls["button1"].Text = "Ok";
            form2.ShowDialog();
            form2.Controls["button1"].Click += new EventHandler(form2_button1_Click);
            private void button1_Click(object sender, EventArgs e)
            {
                form2.Close();
            }


то есть в обработчике события клик кнопки должно позволять описывать обработчик события другой кнопки ? помоему что тут не..  smile 

Это сообщение отредактировал(а) gORik - 11.5.2008, 18:10
PM MAIL ICQ   Вверх
CYBERDREAM
Дата 11.5.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Дай код ошибок твоих, чтобы можно было понять, что не так. 
ОПисывать обработичк события дочерней кнопки можно не только нажатием кнопки, это как фантазия подскажет.  smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
gORik
Дата 11.5.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Код

private void предметToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.FormBorderStyle = FormBorderStyle.FixedDialog;
            form2.StartPosition = FormStartPosition.CenterScreen;
            form2.MaximizeBox = false;
            form2.MinimizeBox = false;
            form2.Text = "Додати предмет";
            form2.Controls["label1"].Text = "Виберіть спеціальність";
            form2.Controls["label2"].Text = "Введіть назву предмета";
            form2.Controls["button1"].Text = "Ok";
            form2.ShowDialog();
        }


это обработчик события Клик пункта меню главной формы. далее есть у меня Form2 обэкт которой я создаю. Мне нада что б в обработчике события Клик пункта меню главной формы обрабатывать событие Клик кнопки второй формы. Обработка должна быть в блоке кода который я привел.. скажем как то так:

Код

private void предметToolStripMenuItem_Click(object sender, EventArgs e)
{
           Form2 form2 = new Form2();
...
           form2.Controls["button1"].Click += new EventHandler(form2_button1_Click);
           private void form2_button1_Click(object sender, EventArgs e)
           {
                 form2.Close();
            }
}

PM MAIL ICQ   Вверх
vponomarov
Дата 11.5.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 5
Всего: 12



gORik, ну если у тебя код такой как ты написал, то понятно в чем ошибка: метод form2_button1_Click должен быть методом класса (таким же как и предметToolStripMenuItem_Click, например).
нельзя писать один метод внутри другого, тут тебе не пасаль smile 
хотя если это просто опечатка, то сорри


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
gORik
Дата 11.5.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



в том то и дело что нельзя :( но как тогда обработать событие Клик на второй форме?
PM MAIL ICQ   Вверх
-Mikle-
Дата 12.5.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



уже сказали, метод обработки события должен быть членом класса. 

Код

private void предметToolStripMenuItem_Click(object sender, EventArgs e)
{
           Form2 form2 = new Form2();
...
           form2.Controls["button1"].Click += new EventHandler(form2_button1_Click);
}

private void form2_button1_Click(object sender, EventArgs e)
{
       form2.Close();
}


ну или, если принципиально хочешь метод в методе, тогда используй синтаксис анонимных методов:

Код

private void предметToolStripMenuItem_Click(object sender, EventArgs e)
{
           Form2 form2 = new Form2();
...
           form2.Controls["button1"].Click += delegate(object sender, EventArgs e)
                                              {
                                                  form2.Close();
                                              };
}

и все будет гуд.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
gORik
Дата 12.5.2008, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



спс пошло!smile 
PM MAIL ICQ   Вверх
-Mikle-
Дата 12.5.2008, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(gORik @  12.5.2008,  03:34 Найти цитируемый пост)
спс пошло


я не сомневался  smile 


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.