Лучший отвечающий
Как переопределить событие в C#?

Вопрос
-
Есть класс MyTabControl наследуюший от TabControl.
Сам экземпляр класса создается на форме программным способом.
Необходимо переопределить событие
private void tabcontrol_SelectedIndexChanged(Object sender, EventArgs e) { MessageBox.Show("You are in the TabControl.SelectedIndexChanged event." ); }
Просто вставить верхний текст не получается, хотя я пребывал так сделать с DataGridView получилось.
3 января 2011 г. 16:31
Ответы
-
Наверно, ты имеешь ввиду создать обработчик события? Тогда так:
// Класс public class MyTabControl:TabControl {} // Где-то в недрах формы // Создаем экземпляр MyTabControl mtb = new MyTabControl(); // Добавляем закладки mtb.TabPages.Add("1"); mtb.TabPages.Add("2"); // Вешаем обработчик mtb.SelectedIndexChanged += new EventHandler(mtb_SelectedIndexChanged); // Помещаем на форму экземпляр this.Controls.Add(mtb); // Реализзация обработчика void mtb_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show("You are in the TabControl.SelectedIndexChanged event."); }
- Предложено в качестве ответа Bahromjon 10 января 2011 г. 10:38
- Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 22:53
4 января 2011 г. 7:15Модератор -
Стоп, а что значит переопределить? Ведь можно вместо этого, во-первых, отписаться от события а-ля tabcontrol.SelectedIndexChanged -= tabcontrol_SelectedIndexChanged; а потом переподписаться на какое-то другое событие, например tabcontrol.SelectedIndexChanged += (sender, e) => { ваш код тут }
- Dmitri Nesteruk, MVP C#, Microsoft Partner- Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 22:53
5 января 2011 г. 5:18 -
Так можно переопределить:
class myTab : TabControl { protected override void OnSelectedIndexChanged(EventArgs e) { MessageBox.Show("You are in the TabControl.SelectedIndexChanged event."); // если закомментировать строчку ниже, то при подписке на событие, обработчик события не будет работать base.OnSelectedIndexChanged(e); } }
Для связи [mail]- Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 23:02
10 января 2011 г. 23:01
Все ответы
-
Наверно, ты имеешь ввиду создать обработчик события? Тогда так:
// Класс public class MyTabControl:TabControl {} // Где-то в недрах формы // Создаем экземпляр MyTabControl mtb = new MyTabControl(); // Добавляем закладки mtb.TabPages.Add("1"); mtb.TabPages.Add("2"); // Вешаем обработчик mtb.SelectedIndexChanged += new EventHandler(mtb_SelectedIndexChanged); // Помещаем на форму экземпляр this.Controls.Add(mtb); // Реализзация обработчика void mtb_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show("You are in the TabControl.SelectedIndexChanged event."); }
- Предложено в качестве ответа Bahromjon 10 января 2011 г. 10:38
- Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 22:53
4 января 2011 г. 7:15Модератор -
переопределить TabControl.SelectedIndexChanged нелзя. Оно не обявлено как virtual.
Можно толко явно перекрывать:
public class MyTab : TabControl { public new event EventHandler SelectedIndexChanged; }
4 января 2011 г. 16:31 -
переопределить TabControl.SelectedIndexChanged нелзя. Оно не обявлено как virtual.
Можно явно перекрывать:
public class MyTab : TabControl { public new event EventHandler SelectedIndexChanged; }
А если, как прозвучало в вопросе, экземпляр класса создается программным способом? ;)4 января 2011 г. 23:03 -
переопределить TabControl.SelectedIndexChanged нелзя. Оно не обявлено как virtual.
Можно явно перекрывать:
public class MyTab : TabControl { public new event EventHandler SelectedIndexChanged; }
А если, как прозвучало в вопросе, экземпляр класса создается программным способом? ;)
Выше указано код для этой случай.5 января 2011 г. 5:11 -
Стоп, а что значит переопределить? Ведь можно вместо этого, во-первых, отписаться от события а-ля tabcontrol.SelectedIndexChanged -= tabcontrol_SelectedIndexChanged; а потом переподписаться на какое-то другое событие, например tabcontrol.SelectedIndexChanged += (sender, e) => { ваш код тут }
- Dmitri Nesteruk, MVP C#, Microsoft Partner- Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 22:53
5 января 2011 г. 5:18 -
Так можно переопределить:
class myTab : TabControl { protected override void OnSelectedIndexChanged(EventArgs e) { MessageBox.Show("You are in the TabControl.SelectedIndexChanged event."); // если закомментировать строчку ниже, то при подписке на событие, обработчик события не будет работать base.OnSelectedIndexChanged(e); } }
Для связи [mail]- Помечено в качестве ответа Abolmasov Dmitry 10 января 2011 г. 23:02
10 января 2011 г. 23:01