ToolStripButton在显示Modal Less Dialog时有不同的行为

时间:2012-10-19 11:35:40

标签: c# winforms visual-studio-2008 toolstripbutton

我有一个主窗口和一个带有不同命令按钮的工具条。在这些命令中,我也有一个“打印”按钮(见下文)。当我点击“打印”按钮时,我需要将子表单显示为Modal Less Dialog。因为,我对子表单的选择很少。如果用户选择它们,那么他/她也可以与主表格进行交互。

enter image description here

同时,在show()方法中,我禁用主窗体上的所有控件(见下文),因为如果我使用ShowDialog()方法显示子窗体,它将会完成。当我单击“打印”按钮时,它的颜色会发生变化,表明它已被聚焦/选中。

enter image description here

点击子表单如下图所示。

enter image description here

逻辑上,当我关闭子表单时,它应该返回到先前的模式。但是,即使子表单显示...... Main-Form上的'Print'按钮仍然是聚焦/选择的。当我关闭子表单时,“打印”按钮仍然像下面一样聚焦/选择。

enter image description here

需要更改哪个事件/属性才能使此“打印”按钮显示为处于初始状态。

我尝试过Invalidate(),更改BackColor但尚未满足要求。任何指南?

2 个答案:

答案 0 :(得分:0)

如果您不希望它显示为“已选中”,则将按钮的CheckOnClick属性设置为false,否则在子窗体关闭时切换按钮上的CheckState属性。< / p>

答案 1 :(得分:0)

嗯,ToolStripButton中的Selected属性是只读的。任何人,需要清除工具条按钮的选择可以使用下面的方法,通过反射调用。

MethodInfo method = typeof(ToolStrip).GetMethod("ClearAllSelections", BindingFlags.NonPublic | BindingFlags.Instance);
            method.Invoke(yourToolStripName, null);

这来自:How to Deselect ToolStripItems

快乐编程。