Ошибка запуска функции C # из другого приложения C # - PullRequest
0 голосов
/ 29 марта 2011

У меня есть форма C # Windows, которая содержит функцию под названием автоматизация. Затем у меня есть консольное приложение C #, которое я пытаюсь использовать для вызова функции формы Windows. Я создал ссылку и получил это далеко:

Form1 FormInstance = new Form1();
FormInstance.automation += new EventHandler(?);

Мой вопрос: я пытался добавить что-то, где находится мой знак вопроса, но я продолжаю получать сообщение об ошибке. Если я настрою это так:

FormInstance.automation += new EventHandler(NewHandler);

Я получаю "NewHandler" не существует в текущем контексте.

А если я создам

public void NewHandler(object sender, EventArgs e)

Я получаю Ссылка на объект требуется для нестатического поля, метода или свойства.

Я не могу понять, что я делаю неправильно.

Ответы [ 3 ]

1 голос
/ 29 марта 2011

На высоком уровне это работает примерно так:

public static void Main(string[] args)
{
    Form x = new Form();
    x.Method = new EventHandler(MyHandler);
}

public static void MyHandler(object sender, EventArgs e)
{
   // Stuff
}

Похоже, вы не пометили свой метод ключевым словом static (если вызываете его с помощью статического метода, такого как main консоли). Вы также должны убедиться, что вы назначаете соответствующего делегата на событие; т. е. automation в вашем методе должна быть возможность принять делегат EventHandler.

1 голос
/ 29 марта 2011

Это должно быть object.NewHandler, где object может быть this, если это происходит в контексте метода-члена. Вы можете быть прощены за то, что отключили это, потому что большинство ссылок на члены могут быть неявными, но это должно быть явным.

0 голосов
/ 29 марта 2011

Самый простой способ - сделать метод обработчика событий статическим

public static void NewHandler(object sender, EventArgs e) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...