FileSystemWatcher и запуск метода Form из метода OnChange - PullRequest
0 голосов
/ 07 апреля 2020

Я поддерживал Windows Приложение Forms, которое помогло подготовить несколько файлов. Один из этих файлов гораздо проще редактировать в Notepad ++, поэтому пользователям нужна была возможность редактировать его в упомянутой программе. Я хотел иметь logi c, который перезагрузит данные из этого конкретного файла, как только он будет отредактирован во внешней программе. В Inte rnet я обнаружил, что FileSystemWatcher может быть полезным для меня, поэтому я создал кнопку, которая определяет FileSystemWatcher и начинает искать изменения:

private void btnNotepadPP_Click(object sender, EventArgs e)
{
    ......
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = Path.GetDirectoryName(OtherFileName);
    watcher.NotifyFilter = NotifyFilters.LastWrite;
    watcher.Filter = "FILE.xml";

    watcher.Changed += OnChanged;

    watcher.EnableRaisingEvents = true;
    ......
}

И здесь я определил OnChanged :

private static void OnChanged(object source, FileSystemEventArgs e)
{
    MessageBox.Show("Edited!");

    //What I wanted to do
    ReloadFormSilently(); // -> Main Form method
}

И это моя проблема, ReloadFormSilently() не видно из OnChanged. Это может быть очень очевидно, но я не мог найти способ, как решить это. Я знаю, что мне не хватает какой-либо ссылки на Основную форму, но я не знаю, как передать эту ссылку. Я думал даже о перегрузке OnChanged, но очень быстро понял, что не знаю, как это сделать. Буду благодарен за совет, как решить эту проблему. Или, может быть, есть более простой способ? Заранее спасибо:)

1 Ответ

0 голосов
/ 07 апреля 2020

Большое спасибо @ Zer0 - Решение было простым:

private void OnChanged(object source, FileSystemEventArgs e)
{
    MessageBox.Show("Edited!");

    //What I wanted to do
    ReloadFormSilently(); // -> Main Form method
}

static создает проблему. Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...