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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка события кнопки 
:(
    Опции темы
kirillga
Дата 21.4.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток.

Вопрос следующий
для наглядности код
Объявляю дейстиве на клик клавы
Код

bt.MouseClick += new MouseEventHandler(VTBfrMenu_Click);


объявляю реакцию на клик ентером
Код

void bt_Click(object sender, EventArgs e)
        {
            for (int x = 0; x < VTBPlugins.Count; x++)
            {
                MessageBox.Show("Ok");                
            }   
            
        }


При выполнение кода выдаеться сообщение "Ок" но если я нажму повторно ентер для закрытия этого сообщения
мне опять вылезет оно как сделать так чтобы на повторное нажатие закрывалось сообщение??
Я понимаю что можно добавить переменную в обработчик и реагировать на второе нажатие ентера
просто хотелось бы посмотреть разные идеи и предложения.
PM   Вверх
Walker
Дата 21.4.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Убрать цикл. smile 
Зачем он вообще нужен в таком контексте?



--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
kirillga
Дата 21.4.2008, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

bt.MouseClick += new MouseEventHandler(VTBfrMenu_Click);


Код

void bt_Click(object sender, EventArgs e)
        {
            
            for (int x = 0; x < VTBPlugins.Count; x++)
            {
                string s = "";
                string s1 = "";
                s += "System.Windows.Forms.Button, Text: ";
                s += VTBPlugins[x].Caption;
                s1 += sender;

                if (s1 == s && s2 == 0)
                {
                    VTBPlugins[x].MenuClick();
                    s2 = 1;
                }
                else { s2 = 0; }
            }   
            
        }

Вот для чего цикл нужен чтобы обработать событие каждой кнопки потомучто я форму собираю из многих элементов
которые загружаються автоматически из дллок и не только кнопки))))
Я решил это кодом предложенным выше если есть замечания выслушаю с удовольствием)))
PM   Вверх
Walker
Дата 21.4.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так, хорошо. Тогда, как я понимаю, Вы либо уведомляете о загрузке каждого плагина, оставив MessageBox в цикле, и тогда он прозвенит столько раз, сколько плагинов Вам ответят Success. Либо выносите MessageBox за рамки цикла. И он Вас порадует успехом или огорчит неуспехом общей процедуры загрузки всех плагинов сразу. Или я неправильно понимаю задачу?



--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
kirillga
Дата 21.4.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет например есть 5 кнопок запакованные в дллки они подгружаються при запуске основной формы 
записываються в лист VTBPlugins у каждой кнопки есть действие в MenuClick() так  при нажатии на кнопку 
мне необходимо получить действие в MenuClick() с помощью sender определяем какая кнопка нажата и производим действие которое заданно в MenuClick() например MessageBox.Show("Ok") при этом когда выскачит сообщение 
нажав ентер оно появиться вновь вот такая вот петрушка))

PM   Вверх
vponomarov
Дата 21.4.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



kirillga, ok, так зачем же цикл в bt_Click делать? smile 
и вообще, при нажатии на кнопку вызывается VTBfrMenu_Click.
короче у тебя какая-то каша с именами функций и в итоге ничего не ясно smile 


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


Новичок



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

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



сори ошибся тут немного не так
Код

bt.Click += new EventHandler(bt_Click);

void bt_Click(object sender, EventArgs e)
        {
            
            for (int x = 0; x < VTBPlugins.Count; x++)
            {
                string s = "";
                string s1 = "";
                s += "System.Windows.Forms.Button, Text: ";
                s += VTBPlugins[x].Caption;
                s1 += sender;

                if (s1 == s && s2 == 0)
                {
                    VTBPlugins[x].MenuClick();
                    s2 = 1;
                }
                else { s2 = 0; }
            }   
            
        }


Вот так правильней надеюсь таб будет понятней
PM   Вверх
vponomarov
Дата 22.4.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



kirillga, так понятнее smile 
а нельзя сделать например так:
Код

void bt_Click(object sender, EventArgs e)
        {
            VTBPlugin s=(VTBPlugin)sender; //тут укажи имя своего класса
            s.MenuClick();           
        }



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


Новичок



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

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



Не получилось ошибку выдает(((
PM   Вверх
vponomarov
Дата 23.4.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



kirillga, а можно как-то подробнее? smile 
какую ошибку? в какой строке? smile 


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

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


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

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


 




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


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

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