Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
22 / 22 / 2
Регистрация: 09.02.2011
Сообщений: 54

Собственный Event с Delegate пример(нужен совет)

09.03.2011, 12:25. Показов 5332. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал разбираться в событиях. Хочу написать пример но ничего в голову не приходит, написал простой Event для кнопки...

Создал новый класс

C#
1
2
3
4
public class MyEventArgs : EventArgs
{
     public string MyValue { get; set; }
}
отдельный класс(Наследник Button) в котором описал NewClickEvent

C#
1
2
3
4
5
6
7
8
9
10
11
public class NewButton : Button
    {
        public delegate void MyNewClickEvent(object sender, MyEventArgs e);
 
        public event MyNewClickEvent NewClickEvent;
 
        public NewButton()
        {
           
        }
    }
и вот таким образом запустил этот Event в Form
C#
1
2
3
4
5
6
7
8
9
10
11
private void myNewButton_NewClickEvent(object sender, MyEventArgs e)
        {
            MessageBox.Show("Me was clicked with value: " + e.MyValue);
        }
 
        private void myNewButton_Click(object sender, EventArgs e)
        {
            MyEventArgs ev = new MyEventArgs();
            ev.MyValue = "test";
            myNewButton_NewClickEvent(sender, ev);
        }
Но это немного приметивно, хотелось бы что нибудь по интереснее написать, а в голову ничего не идёт.
Может посоветуете, что ещё можно перегрузить(не обязательно кнопку...) или дадите ссылки на хорошие примеры.
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2011, 12:25
Ответы с готовыми решениями:

Delegate.BeginInvoke и ManualResetEvent: нужен пример
Добрый день, форумчане! Собственно лазил по msdn и гуглу, но так и не нашел вменяемый код. Нужен пример на WindiwsForms, который может...

Собственный тип данного(нужен совет)
Привет всем. Сегодня заморочился одной задачей. Нужно использование своего нового типа данного, что-то на подобии Byte Или Word, как...

Delegate и event
Здравствуйте, кто-нибудь может, пожалуйста, объяснить некоторые строки в этом коде?: public class CalculatorEvent { ...

3
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
09.03.2011, 23:11
Попробуйте как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public delegate void MyClickHandler(object sender, MyEventArgs me);
    
public class MyButton : Button
{
    private string m_text;
    public event MyClickHandler MyClick;
 
    public MyButton(string text)
        : base()
    {
        this.m_text = text;
        this.Click += new EventHandler(MyButton_Click);
    }
 
    private void MyButton_Click(object sender, EventArgs e)
    {
        if (MyClick != null)
            MyClick(sender, new MyEventArgs(this.m_text));
    }
}
 
public class MyEventArgs : EventArgs
{
    public string MyVal { get; private set; }
 
    public MyEventArgs(string text)
    {
        this.MyVal = text;
    }
}
1
22 / 22 / 2
Регистрация: 09.02.2011
Сообщений: 54
11.03.2011, 11:28  [ТС]
Отлично, спасибо большое!
Есть один небольшой вопрос...

Функцию я оставил
C#
1
2
3
4
private void myNewButton_NewClickEvent(object sender, MyEventArgs e)
{
     MessageBox.Show("Me was clicked with value: " + e.MyVal);
}
Декларация кнопки происходит таким образом:
C#
1
this.myNewButton = new EssentialWCFTester.NewButton("New Button");
При нажатии на кнопку выдаётся Me was clicked with value: New Button

Можно ли сделать так чтобы m_text я задал сам, а не в конструкторе при инициализации кнопки?
Так и непонял как тут использовать
C#
1
2
3
4
5
6
7
8
9
public class MyEventArgs : EventArgs
{
    public string MyVal { get; private set; }
 
    public MyEventArgs(string text)
    {
        this.MyVal = text;
    }
}
Раньше я передовал MyVal кнопке и при нажатии его и выдавал...
Немного запутался, поясните пожалейста эти тонкости.
Спасибо!
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
11.03.2011, 15:40
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public delegate void MyClickHandler(object sender, MyEventArgs me);
    
public class MyButton : Button
{
    public string MyText;
    public event MyClickHandler MyClick;
 
    public MyButton()
        : base()
    {
        this.Click += new EventHandler(MyButton_Click);
    }
 
    private void MyButton_Click(object sender, EventArgs e)
    {
        if (MyClick != null)
            MyClick(sender, new MyEventArgs(this.MyText));
    }
}
 
public class MyEventArgs : EventArgs
{
    public string MyVal { get; private set; }
 
    public MyEventArgs(string text)
    {
        this.MyVal = text;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2011, 15:40
Помогаю со студенческими работами здесь

Cписок event и delegate во время отладки
Добрый день. Как или где в дебаг моде можно увидеть весь список ивентов и делегатов? А то создаю 10 потоков с 5 ивентами на поток, а...

Нужен совет или пример
Решил с целью изучения PHP и mysql начать писть сайт (движок). Сначала конечно книжки читал, и сейчас читаю. Знаний пока не много. Вот...

Событие Event.COPY Event.PASTE Event.CUT
Привет я не знаю как написать код в котором текстовое поле реагировало бы на события копирования/вставки/вырезки В справочнике написано,...

Нужен event типа onMouseOut
Здравствуйте! На форме расположена кнопка, далее в обработчике события onMouseMove меняю внешний вид курсора. Мне нужно чтобы курсор...

Для чего нужен объект Event?
Для чего нужен объект Event?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru