我维护Windows窗体应用程序,该程序有助于准备一些文件。这些文件之一在Notepad ++中更容易编辑,这就是为什么用户希望可以在提到的程序中进行编辑的原因。我想拥有一种逻辑,一旦将在外部程序中对其进行编辑,它将可以从该特定文件中重新加载数据。我在互联网上发现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
。那可能很明显,但是我找不到解决方法。我知道我缺少对Main Form的一些引用,但是我不知道如何传递此引用。我什至考虑过要重载OnChanged
,但是很快我意识到我不知道该怎么做。我将很高兴为您提供一些解决该问题的建议。也许有更简单的方法?
在此先感谢:)
答案 0 :(得分:0)
非常感谢 @ Zer0 -解决方案很简单:
private void OnChanged(object source, FileSystemEventArgs e)
{
MessageBox.Show("Edited!");
//What I wanted to do
ReloadFormSilently(); // -> Main Form method
}
static
引起了问题。干杯!