这是我关于stackoverflow的第一个问题,因此ask-style中的错误不是故意的。
对于事件处理的概念,我都是C#的新手,所以 我想知道,如果有可能通过EventHandler更改ToolStripButtonItem属性的值。
上下文如下:
代码首先初始化包含一些Windows.Forms- Elements的UI。
我感兴趣的ToolStripButtomItem
将Enabled-attribute
设置为false作为默认值。该按钮的功能是在存在某个参考文件时立即切换到比较视图。
这可以是programm-start时的情况,否则可能在运行时创建引用文件。
当然,你可以执行
Button.Enabled=System.IO.File.Exists(Reference-File)
启动并执行类似
的操作CreateFile(ReferenceFile){
...
Button.Enabled = true;
}
但这对我来说似乎相当粗糙。
相反,我想要像:
Button.Enabled = new System.EventHandler(this.EnableButton);
与
private void EnableButton(Object sender, EventArgs e){
if(System.IO.FileExists(ReferenceFile)
Button.Enabled = true;
}
我想要的是,只要参考文件存在就立即启用按钮。有多种方法可以创建引用文件,并且将来会有更多的方法。为了避免在每个createReferenceFile()
- 方法中设置enable-value,EventHandling的概念看起来就像是我的交易。
我试图运行的程序非常全面,所以" polling"在这个地方别无选择。
答案 0 :(得分:0)
我建议每次使用FileSystemWatcher并设置enabled属性。
private void StartListening(string path)
{
var watch = new FileSystemWatcher();
watch.Path = path;
watch.Filter = "*.*";
watch.Created += UpdateState;
watch.Deleted += UpdateState;
}
void UpdateState(object sender, FileSystemEventArgs e)
{
MyButton.Enabled = File.Exists(@"C:\Folder\File.txt");
}
PS:这只是一些非常基本的示例代码,您需要确保引用MyButton
并在那里有正确的路径...