任何人都可以在C#(或任何.NET语言)中使用事件清楚的示例吗? 互联网上有很多这样的东西,但大多数都很复杂,并不适用于所有情况。请尽可能 。
答案 0 :(得分:2)
事件是 event-driven programming 的基础(显然)。因此,只要您想根据其他事情采取行动,事件就是适当的。什么东西可能是无数的东西 - 用户点击按钮,计时器流逝,窗口关闭等等。由于有很多不同的场景,很难使它真正普及。
一个例子是当用户点击按钮时用文本填充标签:
btnMyButton.Click += (o, ev) => { SetTextLabel(label1, "You clicked the button"); };
请注意,SetTextLabel是一个你可以提供的函数,它应该是ThreadSafe(否则我会被评论者抨击,说我的代码不是这样。)
答案 1 :(得分:2)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class EXMAPLE
{
public event EventHandler Changed;
protected string _content;
public string Content{
get { return _content; }
set
{
_content = value;
OnChanged(EventArgs.Empty);
}
}
// Invoke the Changed event; called whenever list changes:
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
Changed(this, e);
}
}
class Program
{
private static void EXAMPLE_CONTENT_CHANGED(object sender, EventArgs e)
{
EXMAPLE ex = (EXMAPLE)sender;
Console.WriteLine(ex.Content);
}
private static void INNA_REAKCJA(object sender, EventArgs e)
{
Console.WriteLine("The Content of EXAMPLE was changed");
}
static void Main(string[] args)
{
EXMAPLE ex1 = new EXMAPLE();
EXMAPLE ex2 = new EXMAPLE();
//add event ;->
ex1.Changed += new EventHandler(EXAMPLE_CONTENT_CHANGED);
ex2.Changed += new EventHandler(EXAMPLE_CONTENT_CHANGED);
ex2.Changed += new EventHandler(INNA_REAKCJA);
//test
ex1.Content = "value 1";
ex2.Content = "value 2";
System.Console.ReadKey();
}
}
}
这只是一个简单的例子 - 不是普遍的; p
答案 2 :(得分:2)
最简单的示例是当您创建包含可点击控件(如按钮)的表单时。当您双击该按钮时,Visual Studio将在后面的代码中生成一个事件,该事件指向将在事件被触发时调用的方法。
this.MyButton.Click += new System.EventHandler(this.MyButton_Click);
一般情况下,事件基本上是一个对象发送的消息,用于通知其他对象发生了一个动作。
答案 3 :(得分:1)
从你的帖子中,你似乎想要一个“例子”,它将“适用于所有情况”,同时具有“普遍性”和“实用性”。我不明白这是怎么可能的。
如果您只想更好地了解事件,请启动here。你可以找到更短的东西,但可能不会更清楚。
答案 4 :(得分:1)
答案 5 :(得分:0)
事件是处理用户界面与应用程序其余部分交互的当前方式。微软未来进入事件驱动的开发取决于这项称为RX Extensions的新技术的未来(尽管看起来很有希望)。 Java具有Actionlistener组件(来自观察者模式),如果您知道它并且可以评估事件的可用性(在UI中)。事件通常是在发生某些事情时向引用对象提供通知的机制。
同时查看msdn的相关教程。
示例:
List.Changed -= new ChangedEventHandler(ListChanged);
这里开发人员连接了将通过List容器的Changed事件的上升来调用的方法。因此,当列表更改(添加或删除项目)时,将调用此方法。