ErrorProviderが使用できるイベントはありません。実際には、私はこれに関連するすべてのイベントを見つけることができません。このクラスの外に、あなたはこのような何かを行うことができ、
// Defines an extended version of the ErrorProvider
public class ExtendedErrorProvider : ErrorProvider, INotifyPropertyChanging, INotifyPropertyChanged
{
// That will replace the SetIconAlignment from the base class when you call it from outside the class
public void SetIconAlignment(Control control, ErrorIconAlignment value)
{
// Will raise an event just before changing the property
OnPropertyChanging("IconAlignment");
// Changed the property using the base class
base.SetIconAlignment(control, value);
// Will raise an event just after the property has changed
OnPropertyChanged("IconAlignment");
}
// This will ensure that whenever you bind methods to be called on the PropertyChanging, they will get called for the specific property...
protected void OnPropertyChanging(string property) { if (PropertyChanging != null) PropertyChanging(this, new PropertyChangingEventArgs(property)); }
public event PropertyChangingEventHandler PropertyChanging;
// This will ensure that whenever you bind methods to be called on the PropertyChanged, they will get called for the specific property...
protected void OnPropertyChanged(string property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(property)); }
public event PropertyChangedEventHandler PropertyChanged;
}
今:私はErrorProviderから使用してきたものに基づいて
は
、このような方法を拡張するより他に方法はありません
errorProvider1.PropertyChanging += WhatNeedsToBeDoneBeforeChanging(...);
errorProvider1.PropertyChanged += WhatNeedsToBeDoneAfterChanging(...);
イベントは良いです...私はオブザーバーのラインに沿って/観察可能な...しかし、良い答えを考えていた。 – IAbstract
ErrorProviderに基づいて独自の拡張クラスを構築することをお勧めします。しかし、エラーアイコンがmytextbox1に設定されているとイベントを追い抜く方法がないようですね? – huynq9
はい、道があります。 The Code Projectの[this post](http://www.codeproject.com/KB/cs/PropertyNotifyPart1.aspx)を参照してください。ここでは、IPropertyNotificationのカスタム実装を使用して、プロパティ名(古い値や新しい値、シナリオではオブジェクト/コントロール自体など)とともに他のパラメータを渡します。 –