2013-05-29 3 views
1

Дублированный Вопрос:Property is inaccessible due to its protection levelC# Делегаты и события отправить текст из класса, чтобы сформировать

Я хочу, чтобы отправить строку из класса в текстовом поле формы с использованием делегатов и событий, как и в дубликате вопрос выше. Поскольку я новичок в этой теме (делегаты и события), я не могу это установить. Вот что я сделал:

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 '

Можете ли вы сказать мне, правильно ли это сделать.

+2

зачем повышать? любые причины? – David

+2

Пожалуйста, не создавайте новые типы делегатов для обработчиков событий. Вместо этого используйте «EventHandler» или «EventHandler ». – Dennis

+1

@ Денис: Можете ли вы, пожалуйста, продемонстрировать это. Я хотел бы изучить эту технику – user726720

ответ

3

изменения статической функции в метод класса:

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

или изменить событие статическую:

public static event SendText RaiseEvent; 
2

Ваша функция статическая, но ваше событие не является статическим, как сообщает об этом сообщение об ошибке.

Может быть, это поможет вам http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

Дело в том, ваша функция не работает на объект своего класса, но используется объект вашего класса внутри функции, которая не работает.

0

Ваше событие должно быть статичным в этом контексте ussage

public static event SendText RaiseEvent; 
Смежные вопросы