c# - FileSystemWatcher 并从 OnChange 方法触发 Form 方法
问题描述
我维护有助于准备一些文件的 Windows 窗体应用程序。其中一个文件在 Notepad++ 中更容易编辑,这就是为什么用户希望在上述程序中编辑该文件的原因。我想要有一个逻辑,一旦它在外部程序中被编辑,它就会从那个特定的文件重新加载数据。我在 Internet 上发现这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
,但很快我意识到我不知道该怎么做。我将不胜感激一些如何解决这个问题的建议。或者也许有更简单的方法?提前致谢 :)
解决方案
非常感谢@Zer0 - 解决方案很简单:
private void OnChanged(object source, FileSystemEventArgs e)
{
MessageBox.Show("Edited!");
//What I wanted to do
ReloadFormSilently(); // -> Main Form method
}
static
使问题。干杯!
推荐阅读
- javascript - 服务工作者可以在提取处理程序中使用 waitUntil 处理并发请求吗?
- html - 为什么当我更改数字时我的媒体查询不起作用?
- sockets - 如何了解如何与网络设备通信
- javascript - 如何在 Firebase 事务中循环?
- python - 如何使用循环加快计算速度?Python
- java - 在 Flutter 中使用等效的 Java Cipher
- palantir-foundry - 您如何在 Foundry Contour 中得出星期几?
- css - CSS Grid:让最后一个自动放置的孩子填满剩余的列
- reactjs - 如何使用 Jest 模拟第三方 React 组件?
- sql - 在语句完成之前,最大递归 100 已用完。SQL 服务器