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 回答