Вам не нужно объявлять событие снова.Если оно общедоступное и оно уже выбрасывается, когда это необходимо, вы можете обработать изменения, если вам нужно, подписавшись на событие базового класса.
Я имею в виду, что вы можете сделать что-то вроде:
using System;
using System.Windows.Forms;
namespace DRT
{
internal abstract partial class DRT_ComboBox_Abstract : ComboBox
{
public DRT_ComboBox_Abstract()
{
InitializeComponent();
SelectedValueChanged += MyOwnHandler
}
protected virtual void MyOwnHandler(object sender, EventArgs args)
{
// Hmn.. now I know that the selection has changed and can so somethig from here
// This method is acting like a simple client
}
}
}
On S O LID классов (я полагаю, что это так для ComboBox
), часто метод, который эффективно вызывает абонентов для обработки какого-либо события, обычно является виртуальным, позволяя вам, как только вы наследуете от этого класса, перехватывать вызов обработчиков событий, если это то, что вы хотите.
Это:
using System;
using System.Windows.Forms;
namespace DRT
{
internal abstract partial class DRT_ComboBox_Abstract : ComboBox
{
public DRT_ComboBox_Abstract()
{
InitializeComponent();
}
protected override void OnSelectedValueChanged(object sender, EventArgs args)
{
// Wait, the base class is attempting to notify the subscribers that Selected Value has Changed! Let me do something before that
// This method is intercepting the event notification
// Do stuff
// Continue throwing the notification
base.OnSelectedValueChanged(sender, args);
}
}
}
Примечание: IВы удалили метод Disable
только для упрощения кода.Это выходит за рамки данной темы
Надеюсь, это поможет.