使用EventHandler更改ToolStripButtomItem属性

时间:2015-07-08 11:29:17

标签: c# visual-studio button event-handling toolstripbutton

这是我关于stackoverflow的第一个问题,因此ask-style中的错误不是故意的。

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

上下文如下:

代码首先初始化包含一些Windows.Forms- Elements的UI。 我感兴趣的ToolStripButtomItemEnabled-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"在这个地方别无选择。

1 个答案:

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