我正在学习 C# 中的事件处理,并且刚刚学习
了 delegates
我正在寻找一种将一些事件添加到我的 GUI 应用程序的方法。 例如,检查以下代码:-
private void label1_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello World") ;
}
每当我单击标签标签 1 时,此函数都会显示包含内容 HelloWorld 的消息框。我想知道,我们如何添加各种其他事件,例如将鼠标悬停在标签上和其他此类事件。另外,参数有什么用
sender and e
label1.OnMouseHover += myDelegate
会将您的委托添加到鼠标悬停事件中。
请参阅事件列表。
label1.Click += new System.EventHandler(label1_Click);
如果您创建一个类并向其中添加自己的事件,则会得到更好的结果。
默认的"e"是System.EventArgs的实例。你可以从中得出你自己的例如
public class MyEventArgs : System.EventArgs
{
public string EventData {get; private set;}
public MyEventArgs(String argEventData)
{
EventData = argEventData;
}
}
然后在类中使用上述内容
public class SomeFellaWithAnEvent
{
public event EventHandler<MyEventArgs> OnMyEvent;
private int _value;
public int Value
{
get {return _value;}
set
{
if (_value != value)
{
_value = value;
DoEvent(_value.ToString();
}
}
}
protected void DoEvent(String argData)
{
if (OnMyEvent != null)
{
OnMyEvent(this,new MyEventArgs(argData))
}
}
}
所以现在你有一些东西,如果你给了它一个处理程序,如果值被改变,它会引发一个事件
例如
SomeFellaWithAnEvent o = new SomeFellaWithAnEvent()
o.OnMyEvent += someThingChanged();
o.Value = 22;
private void somethingChanged(Object sender, MyEventArgs e)
{
// do something with it.
// debug this and you'll see sender is the o instance above, and e is the instance
// of MyEventArgs created in the DoEvent method and has a property set to "22"
}
从工具箱向现有控件添加更多事件处理程序。单击属性检查器中的事件选项卡(闪电按钮),然后双击该值。
或在代码视图中键入 label1。点击 +=,然后按两次 Tab 键。