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

Поиск:

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


Шустрый
*


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

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



Есть свой собственный контрол. Есть главная форма, на которой лежит панель и в неё добавляется этот самый контрол методом Add(). У главной формы есть событие. Как контролу узнать, что у формы было вызвано это событие и отработать функцию, которая принадлежит контролу. Спасибо
PM MAIL   Вверх
Kolovorot
Дата 6.6.2012, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код



public class MainForm 
{
        public event EventHandler<EventArgs> theEvent;
         
         //Загрузка формы(для примера)
         private void Load(object sender, EventArgs e)
        {
           
             if(theEvent != null)
            theEvent(this, EventArgs.Empty);

           
        }
}

public class UserControl : Control
{
        private MainForm _mainForm;
        public UserControl(IMainForm main)
          {
                    _mainForm = main;
                    _mainForm.theEvent   +=new EventHandler<EventArgs>(OnTheEvent);
          }
    
        private void OnTheEvent(object sender, EventArgs e)
        {
             //реализуем обработку
        }
}

--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
erm0l0v
Дата 6.6.2012, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Можно во всех контролах создать публичный метод и подписываться так
Код

public void Add(IContron newControl)
{
  this.MyEvent += newControl.MyMethod;
}


или в обработчике события в главной форме пробегать по всем контролам и вызывать определенный метод.
PM MAIL   Вверх
tatbesidovska
Дата 6.6.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо всем за ответы, сейчас буду пробовать
PM MAIL   Вверх
tatbesidovska
Дата 7.6.2012, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Kolovorot, решила воспользоваться Вашим примером, у меня вопрос: я так понимаю, что обработка события в UserControl происходит при загрузке формы. Так вот, а если мне нужно отрабатыватьв UserControl несколько событий, которые происходят на главной форме, как быть в этом случае? И нужно ли после отработки ставить theEvent=null. Спасибо
PM MAIL   Вверх
tatbesidovska
Дата 7.6.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообщем, проблема в том, что если запускаю несколько копий программы, например событие сохранения выполняется, так вот оно в одной копии выполняется несколько раз, понимаю, что связано это с делегатами, видимо не правильно использую
PM MAIL   Вверх
RoksolanaMilisskaya
  Дата 11.8.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за ответ
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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