2017-02-24 3 views
-2

私は、オブジェクトの変更を通知するために私のグラフィックオブジェクト上のカスタムイベントを使用します。カスタムイベントの初期化の問題

public class OnLabelWidthChangedEventArgs : EventArgs 
{ 
    private float _width; 

    public float Width 
    { 
     get { return _width; } 
     set { _width = value; } 
    } 

    public OnLabelWidthChangedEventArgs(float widthParam) : base() 
    { 
     Width = widthParam; 
    } 
} 

これは、このイベントを発射オブジェクトです:

public class DisplayLabel : DisplayTextObject 
{ 
    public event EventHandler<OnLabelWidthChangedEventArgs > OnLabelSizeChanged; 

    public DisplayLabel(ScreenView _screenParam, IXapGraphicObject obj) : base(_screenParam, obj) 
    { 
     l = new Label(); 
     SetSize(); 
    } 

    public override void SetSize() 
    { 
     Width = w; 
     Height = h; 
     if(OnLabelWidthChanged != null) 
      OnLabelSizeChanged.Invoke(this, new OnLabelWidthChangedEventArgs(w)); // OnLabelSizeChanged is null 
    } 

OnLabelSizeChangedはどのように、常にnullであります私はそれを初期化できますか?

私の代わりにカスタムイベントの代表者との作業溶液持っている:

public event OnWidthChanged WidthChanged = delegate { }; 

を私はカスタムイベントで、この問題を解決する方法を知っているように思います。

ありがとうございました。

+2

あなたのワーキングソリューションは、カスタムイベントです。 – Servy

+2

https://www.google.com.br/search?q=C%23+custom+events – Tony

答えて

1

あなたはあなたのイベントを初期化していない、あなたは(別名、それに加入する。)それにハンドラを割り当て、これに似た何か:MyEventHandlerMethodは、イベントの署名を照合する方法である

myDisplayLabel.OnLabelWidthChanged += MyEventHandlerMethod; 

、すなわち

void MyEventHandlerMethod(Object sender, OnLabelWidthChangedEventArgs) 

就寝時の読み:https://msdn.microsoft.com/en-us/library/9aackb16(v=vs.110).aspx

+0

を参照してください。さて、それを逃してください...デリゲートの構文はよりコンパクトです...私はそれを使用すると思います。 – Alexus

関連する問題