Я поддерживал 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
, но очень быстро понял, что не знаю, как это сделать. Буду благодарен за совет, как решить эту проблему. Или, может быть, есть более простой способ? Заранее спасибо:)