C# ToolStripButton在显示无模式对话框时有不同的行为

C# ToolStripButton在显示无模式对话框时有不同的行为,c#,winforms,visual-studio-2008,toolstripbutton,C#,Winforms,Visual Studio 2008,Toolstripbutton,我有一个主窗口和一个工具条,上面有不同的命令按钮。在这些命令中,我还有一个“打印”按钮(见下文)。当我点击“打印”按钮时,我需要将子表单显示为无模式对话框。因为,我在子表单上几乎没有选择。如果用户选择它们,那么他/她也可以与主窗体交互 同时,在show()方法上,我禁用了主窗体上的所有控件(见下文),因为如果我使用ShowDialog()方法来显示子窗体,就会这样做。当我点击打印按钮时,它的颜色发生了变化,这表明它已被聚焦/选中 点击子表单如下图所示 从逻辑上讲,当我关闭子窗体时,它应该返

我有一个主窗口和一个工具条,上面有不同的命令按钮。在这些命令中,我还有一个“打印”按钮(见下文)。当我点击“打印”按钮时,我需要将子表单显示为无模式对话框。因为,我在子表单上几乎没有选择。如果用户选择它们,那么他/她也可以与主窗体交互

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

点击子表单如下图所示

从逻辑上讲,当我关闭子窗体时,它应该返回到上一个模式。但是,即使是子表单也显示。。。主窗体上的“打印”按钮仍处于焦点/选中状态。当我关闭子表单时,“打印”按钮仍处于焦点/选中状态,如下所示

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


我尝试了Invalidate(),更改背景色,但尚未满足要求。有什么指导原则吗?

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

好的,ToolStripButton中的选中属性是只读的。任何需要清除toolstrip按钮选择的人都可以使用下面的方法,该方法通过反射调用

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


快乐编程。

您是在处理打印按钮点击或鼠标下键还是?在单击ToolStripMenuItem按钮之后,在Click事件中,ChekOnClick为false,CheckState=Unchecked。那么,在触发click事件时,还有哪些选项可以显示未选中的按钮。