我正在使用C#,.NET 3.5.我理解如何利用事件,如何在我的班级中声明它们,如何将它们从其他地方挂钩等等.一个人为的例子:
public class MyList
{
private List<string> m_Strings = new List<string>();
public EventHandler<EventArgs> ElementAddedEvent;
public void Add(string value)
{
m_Strings.Add(value);
if (ElementAddedEvent != null)
ElementAddedEvent(value, EventArgs.Empty);
}
}
[TestClass]
public class TestMyList
{
private bool m_Fired = false;
[TestMethod]
public void TestEvents()
{
MyList tmp = new MyList();
tmp.ElementAddedEvent += new EventHandler<EventArgs>(Fired);
tmp.Add("test");
Assert.IsTrue(m_Fired);
}
private void Fired(object sender, EventArgs args)
{
m_Fired = true;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不明白的是,当一个人声明一个事件处理程序时
public EventHandler<EventArgs> ElementAddedEvent;
Run Code Online (Sandbox Code Playgroud)
它从未被初始化 - 所以,究竟是什么是ElementAddedEvent?它指向什么?以下操作无效,因为EventHandler永远不会被初始化:
[TestClass]
public class …Run Code Online (Sandbox Code Playgroud) wpf事件处理中发送方和源之间有什么区别?
例如,假设我在画布中有一个椭圆,并点击椭圆:椭圆将既是发送者也是源.
但是,如果椭圆不处理该事件,但主窗口呢,该事件将通过画布...所以画布将是发送者的事件的主窗口,但源将是椭圆形.
我有这个权利吗?