在c#中触发一个事件

时间:2012-07-26 18:45:20

标签: c# events slider

我想要做的是为滑块触发ValueChanged事件。我该怎么做?

我不想直接调用ValueChanged事件处理程序。

我实际上正在尝试触发事件,就像用户正在调整UI上的滑块一样。

2 个答案:

答案 0 :(得分: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[] { });

答案 1 :(得分:-1)

你描述的内容无法真正完成。事件只能在声明它们的类中触发。

为什么还需要触发ValueChanged事件?听起来这个任务适用于DataModel或ViewModel,而不是滑块。