c#委托和事件将文本从类发送到表单

本文关键字:表单 文本 事件 | 更新日期: 2023-09-27 18:16:02

重复问题:由于其保护级别,属性不可访问

我想发送一个字符串从类到表单文本框使用委托和事件在上面的重复问题。由于我是这个主题(代表和事件)的新手,我无法设置这个。下面是我所做的:

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_UTF_8_converter.Converter.RaiseEvent"

你能告诉我以上是正确的做法吗?

c#委托和事件将文本从类发送到表单

将静态函数改为类方法:

public void convert(object source, FileSystemEventArgs f)
{
  //do something then 
  if (RaiseEvent != null) { ... }
}

或将事件更改为static:

public static event SendText RaiseEvent;

你的函数是静态的,但你的事件不是静态的,因为错误信息告诉你。

也许这对你有帮助http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

关键是你的函数不能在你的类的对象上工作,但你在你的函数中使用了你的类的对象,这不起作用

你的事件应该是静态的

public static event SendText RaiseEvent;