c#委托和事件将文本从课堂发送到表单
重复问题: 我想使用委托和事件将一个字符串从类发送到表单文本框,如上面重复的问题所示。由于我对该主题(代表和事件)不熟悉,因此无法进行设置。以下是我所做的:c#委托和事件将文本从课堂发送到表单,c#,.net,winforms,C#,.net,Winforms,重复问题: 我想使用委托和事件将一个字符串从类发送到表单文本框,如上面重复的问题所示。由于我对该主题(代表和事件)不熟悉,因此无法进行设置。以下是我所做的: class Converter { public delegate void SendText( Converter c, EventArgs e); public event SendText RaiseEvent; public static void WatchFile() { //
class Converter
{
public delegate void SendText( Converter c, EventArgs e);
public event SendText RaiseEvent;
public static void WatchFile()
{
// watcher is initialized (code is not show)
watcher.Changed += new FileSystemEventHandler(convert);
}
public static void convert(object source, FileSystemEventArgs f)
{
//do something then
if (RaiseEvent != null)
{
// Raise event and send text to controls
}
}
}
我收到一条错误消息:
非静态字段、方法或对象需要对象引用
属性“Ansi\u UTF\u 8\u converter.converter.RaiseEvent”
你能告诉我上述方法是否正确吗 您的函数是静态的,但您的事件不是静态的,正如错误消息告诉您的那样 也许这对你有帮助
关键是你的函数对你的类的对象不起作用,但是你在你的函数中使用了你的类的对象,而这个对象不起作用。你的函数是静态的,但是你的事件不是静态的,正如错误消息告诉你的那样 也许这对你有帮助
关键是你的函数对类的对象不起作用,但你在函数中使用了类的对象,而该对象不起作用。在ussage的上下文中,你的事件应该是静态的
public static event SendText RaiseEvent;
在ussage的上下文中,您的事件应该是静态的
public static event SendText RaiseEvent;
将函数的静态值更改为类方法:
public void convert(object source, FileSystemEventArgs f)
{
//do something then
if (RaiseEvent != null) { ... }
}
或将事件更改为静态:
public static event SendText RaiseEvent;
将函数的静态值更改为类方法:
public void convert(object source, FileSystemEventArgs f)
{
//do something then
if (RaiseEvent != null) { ... }
}
或将事件更改为静态:
public static event SendText RaiseEvent;
为什么要投票?有什么原因吗?请不要为事件处理程序创建新的委托类型。改用
EventHandler
或EventHandler
。@Dennis:你能演示一下吗。我很想知道这个technique@user726720:而不是公共委托void SendText(转换器c、事件参数e);公共事件SendText RaiseEvent代码>使用公共事件处理程序RaiseEvent代码>。另外,请注意,指南建议将事件命名为某些已发生的操作(“更改”、“单击”、“检查”、“接收”等)。为什么要投票?有什么原因吗?请不要为事件处理程序创建新的委托类型。改用EventHandler
或EventHandler
。@Dennis:你能演示一下吗。我很想知道这个technique@user726720:而不是公共委托void SendText(转换器c、事件参数e);公共事件SendText RaiseEvent代码>使用公共事件处理程序RaiseEvent代码>。另外,请注意,指南建议将事件命名为某些已发生的操作(“更改”、“单击”、“检查”、“接收”等)。