2011-08-24 12 views
-3

errorProvider.SetIconAlignment()メソッドを使用すると、ターゲットコントロールのイベントの種類がわかりますか?例えばerrorProvider.SetIconAlignmentを使用すると、ターゲットコントロールで何らかのイベントが発生する

私はSetIconAlignmentが呼び出されたときには、このイベントをキャッチしたいmytextbox1にerrorProvider.SetIconAlignment(mytextbox1, ErrorIconAlignment.MiddleRight);

を呼びますか?

答えて

3

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(...); 
+0

イベントは良いです...私はオブザーバーのラインに沿って/観察可能な...しかし、良い答えを考えていた。 – IAbstract

+0

ErrorProviderに基づいて独自の拡張クラスを構築することをお勧めします。しかし、エラーアイコンがmytextbox1に設定されているとイベントを追い抜く方法がないようですね? – huynq9

+1

はい、道があります。 The Code Projectの[this post](http://www.codeproject.com/KB/cs/PropertyNotifyPart1.aspx)を参照してください。ここでは、IPropertyNotificationのカスタム実装を使用して、プロパティ名(古い値や新しい値、シナリオではオブジェクト/コントロール自体など)とともに他のパラメータを渡します。 –

関連する問題