5

次のコードでは、イベントが発生したときに 2 つの文字列を渡す構文を知る必要があります。

 [PublishEvent("Click")]
 public event EventHandler<EventArgs<string>> MyEvent;

ありがとう、サクソン。

4

2 に答える 2

19

最もクリーンな方法は、から派生する独自のクラスを作成することですEventArgs

    public class MyEventArgs : EventArgs
    {
        private readonly string _myFirstString;
        private readonly string _mySecondString;

        public MyEventArgs(string myFirstString, string mySecondString)
        {
            _myFirstString = myFirstString;
            _mySecondString = mySecondString;
        }

        public string MyFirstString
        {
            get { return _myFirstString; }
        }

        public string MySecondString
        {
            get { return _mySecondString; }
        }
    }

そして、次のように使用します。

public event EventHandler<MyEventArgs> MyEvent;

イベントを発生させるには、次のようにします。

    protected virtual void OnMyEvent(string myFirstString, string mySecondString)
    {
        EventHandler<MyEventArgs> handler = MyEvent;
        if (handler != null)
            handler(this, new MyEventArgs(myFirstString, mySecondString));
    }
于 2012-09-19T16:03:40.033 に答える
2

クラスを作成してEventArgsを拡張し、それを渡します

public class YourCustomeEvent : EventArgs
{
   public string yourVariable {get; }
}

次に、このようなカスタムクラスを提供する必要があります

 public event EventHandler<YourCustomeEvent> MyEvent;
于 2012-09-19T16:04:29.943 に答える