1

私がやりたいことは、スライダーの ValueChanged イベントを発生させることです。どうすればいいですか?

ValueChanged イベント ハンドラを直接呼び出したくありません。

ユーザーがUIのスライダーを調整しているかのように、実際にイベントを発生させようとしています。

4

2 に答える 2

1

他のオブジェクトのイベントを発生させることは、テストに非常に役立ちます。次のコードでそれを実現できます。

class SomeClass
{
  public event Action SomeEvent;
}

// later
var instance = new SomeClass();
instance.SomeEvent += () => Console.WriteLine("it happeneed");

var flags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public;
var type = typeof(SomeClass);
var field = type.GetField("SomeEvent", flags);
var method = field.FieldType.GetProperty("Method", flags);
var target = field.FieldType.GetProperty("Target", flags);
var methodInstance = field.GetValue(instance);
((MulticastDelegate)methodInstance).DynamicInvoke(new object[] { });
于 2012-07-26T19:15:23.893 に答える
-1

あなたが説明することは、実際にはできません。イベントは、イベントが宣言されているクラス内からのみ発生させることができます。

とにかく ValueChanged イベントを発生させる必要があるのはなぜですか? このタスクは、スライダーではなく、DataModel または ViewModel 用のもののようです。

于 2012-07-26T18:49:31.467 に答える