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



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


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