IExtenderProviderを使用してコントロールにプロパティを追加するなど、コントロールにイベントを追加する方法はありますか?コントロールイベントを拡張する方法IExtenderProvider?
errorpoviderを使用して独自のバリデーターを作成しようとしています。 IExtenderProviderでerrorproviderとerrortextをコントロールに追加します。今私はエクステンダークラスからイベントを発射する必要があります。
スニペット:
[ProvideProperty("ErrorText", typeof(TextBox))]
[ProvideProperty("ErrorProvider", typeof(TextBox))]
class ValidatorExtender : Component, IExtenderProvider {
public bool CanExtend(object extendee) {
return extendee is TextBox;
}
[DefaultValue(""), Category("Data")]
public string GetErrorText(Control control) {
//---------------------------
//Return the ErrorText
//---------------------------
}
}
public void SetErrorText(Control control, string value) {
//---------------------------
//Assigning the ErrorText
//---------------------------
}
[DefaultValue(null), Category("Data")]
public ErrorProviderEX GetErrorProvider(Control control) {
//---------------------------
//Return the ErrorProvider
//---------------------------
}
public void SetErrorProvider(Control control, ErrorProviderEX value) {
//---------------------------
//Assigning the ErrorProvider
//---------------------------
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
public event ValidatingHandler Validating; // -> The event I want to add to the Controls
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
void Control_Leave(object sender, EventArgs e) {
if(Validating != null){
Validating(this, new ValidatingEventArgs());
//--------------------------
// Assign Error if necessary
//--------------------------
}
}
}
errorproviderもerrortextも指定されていない場合は何も起こりません。これは私がそれを望む方法です。 SetErrorTextはerrortextを割り当てるためのもので、errorproviderエントリをただちに作成するのではありません。私が見つけたいくつかのgoogeling後、イベントを拡張することはできません。私は今、Control.Leaveイベントのメソッド(Show/Hide)を呼び出しています。 – Wowa