0

这是我关于stackoverflow的第一个问题,因此询问风格的错误不是故意的。

对于事件处理的概念,我都是 C# 的新手,所以我想知道,是否有可能通过 EventHandler 更改 ToolStripButtonItem 属性的值。

上下文如下:

代码首先初始化包含一些 Windows.Forms-元素的 UI。我感兴趣的ToolStripButtomItem是,它是否Enabled-attribute设置为 false 作为默认值。此按钮的功能是在某个参考文件存在时立即切换到比较视图。程序启动时可能会出现这种情况,否则可能会在运行时创建参考文件。当然,你可以执行

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(),EventHandling 的概念对我来说似乎很合适。

我正在尝试运行的程序非常全面,所以在这个地方“轮询”是没有选择的。

4

1 回答 1

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并且在那里有正确的路径......

于 2015-07-08T11:51:14.633 回答