为什么我的按钮状态不一致?

时间:2015-10-08 12:39:43

标签: c# winforms user-interface inheritance

在我的应用程序中,我有3种浏览本地数据的方法:

  • 简单文件浏览器(OpenFileControlUI
  • 最近打开的文件(RecentlyOpenedFilesUI
  • 带过滤器的文件浏览器(FileFilterControlUI

Theses 3控件继承自基类:

  • OpenFileControlUI继承自OpenFileControl;
  • RecentlyOpenedFilesUI继承自RecentlyOpenedFiles;
  • FileFilterControlUI来自FileFilterControl;

论文3个继承自同一个基础:DataBrowser。这个类有一个toolStrip(toolStrip1),它有一个加载数据的按钮(loadToolStripButton)。我希望每次我的应用程序的阅读器都忙时禁用此按钮,我喜欢这样做:

protected DataBrowser()
{
    InitializeComponent();

    OpenFiles.Instance.ReaderStatus += ReaderStatus;
    //...
}
//...
protected void ReaderStatus(ReadStatusEventArgs e)
{
    loadToolStripButton.Enabled = (e.Status == ReadStatus.Ready);
}

正常触发事件,并且OpenFileControlUIFileFilterControlUI正常启用/禁用按钮,但{} <}}按钮未启用而调试器告诉我 已禁用。

我添加了一个MessageBox,用于显示项目状态:RecentlyOpenedFilesUI

这是两个工作控件的结果:

working messagebox

这就是非工作的(你可以看到按钮没有被禁用):

non working one

我的错误是:

  • 整个项目中唯一更改启用/禁用此按钮的行;
  • 如果我构建Debug / Release;
  • 并不重要
  • 我已使用VS清除项目并手动删除文件;
  • 添加MessageBox.Show("The button is :" + (loadToolStripButton.Enabled ? "Enabled" : "Disabled"));电话无效。

它没有修复此错误。

简单问题:我该如何解决这个问题?

修改

我称之为:

Refresh

这里是protected void ReaderStatus(ReadStatusEventArgs e) { loadToolStripButton.Enabled = (e.Status == ReadStatus.Ready); MessageBox.Show("The button is :" + (loadToolStripButton.Enabled ? "Enabled" : "Disabled")); } 文件(我只关注这个愚蠢的按钮):

DataBrowser.Designer.cs

1 个答案:

答案 0 :(得分:2)

好的我做了很大的清洁工作:

  1. 右键点击Solution =&gt; 清洁解决方案;
  2. 杀死VS;
  3. 使用我首选控制台中的find . -iname "bin" -type d -print0|xargs -0 rm -r --find . -iname "obj" -type d -print0|xargs -0 rm -r --删除了所有愚蠢文件;
  4. 关闭计算机;
  5. 又喝了一杯咖啡;
  6. 重新启动Windows;
  7. 重启VS;
  8. 享受工作代码。
  9. 附注:如果任何人来自 VS DEV团队请仔细阅读,请确认清洁解决方案 清除真正的解决方案