1

重复问题: 由于其保护级别,财产无法访问

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

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”需要对象引用

你能告诉我上述是否是正确的方法吗?

4

3 回答 3

3

将函数的静态更改为类方法:

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

或更改事件静态:

public static event SendText RaiseEvent;
于 2013-05-29T05:50:20.793 回答
2

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

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

关键是您的函数不适用于您的类的对象,但是您在函数中使用了您的类的对象,该对象不起作用。

于 2013-05-29T05:48:18.480 回答
0

在这种使用情况下,您的事件应该是静态的

public static event SendText RaiseEvent;
于 2013-05-29T05:50:20.030 回答