Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Предопределить реакцию на событие в классе. / 5 сообщений из 5, страница 1 из 1
13.07.2004, 14:16
    #32601807
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предопределить реакцию на событие в классе.
Есть новый класс унаследованный от одного из стандартных классов.
У класса-родителя есть событие MouseEnter, на которое при желании можно подписаться.
Как мне внутри нового класса предопределить реакцию на это событие?
т.е. как только создан объект класса он сразу знает как ему поступать в случае MouseEnter.



Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
13.07.2004, 14:59
    #32601939
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предопределить реакцию на событие в классе.
Код: plaintext
1.
2.
3.
4.
protected override void OnMouseEnter(EventArgs e)
{
    ...
    base.OnMouseEnter(e);
}

Raising an event invokes the event handler through a delegate. For more information, see Raising an Event.

The OnMouseEnter method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.

Notes to Inheritors: When overriding OnMouseEnter in a derived class, be sure to call the base class's OnMouseEnter method so that registered delegates receive the event.
...
Рейтинг: 0 / 0
13.07.2004, 15:17
    #32601980
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предопределить реакцию на событие в классе.
The OnMouseEnter method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.

Ну хорошо, что разрешает.
А как быть допустим с событием DrawItem у ListBox'a ?
Дайте примерчик пжалста.

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
13.07.2004, 16:07
    #32602158
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предопределить реакцию на событие в классе.
в конструкторе написал this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;

без base.OnDrawItem(e) тоже работало

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
{
    e.DrawBackground();
    Brush myBrush = Brushes.Black;
    switch (e.Index)
    {
         case  0 :
	myBrush = Brushes.Red;
	break;
         case  1 :
	myBrush = Brushes.Orange;
	break;
         case  2 :
	myBrush = Brushes.Purple;
	break;
    }
    e.Graphics.DrawString(this.Items[e.Index].ToString(), e.Font,
 myBrush,e.Bounds,StringFormat.GenericDefault);
    e.DrawFocusRectangle();
    base.OnDrawItem(e);
}
...
Рейтинг: 0 / 0
13.07.2004, 16:31
    #32602235
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предопределить реакцию на событие в классе.
Ustazzв конструкторе написал this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;

без base.OnDrawItem(e) тоже работало

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
{
    e.DrawBackground();
    Brush myBrush = Brushes.Black;
    switch (e.Index)
    {
         case  0 :
	myBrush = Brushes.Red;
	break;
         case  1 :
	myBrush = Brushes.Orange;
	break;
         case  2 :
	myBrush = Brushes.Purple;
	break;
    }
    e.Graphics.DrawString(this.Items[e.Index].ToString(), e.Font,
 myBrush,e.Bounds,StringFormat.GenericDefault);
    e.DrawFocusRectangle();
    base.OnDrawItem(e);
}


Спасибо. Всё получилось. Без base.OnDrawItem(e) действительно работает.

Я вообще-то кидал уже здесь сообщение, может кто подсажет как мне теперь свой контрол из моего класса сделать.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Предопределить реакцию на событие в классе. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]