当前位置: 首页 > 编程语言 > C#

Winforms中的禁用菜单项仍显示子项分享

时间:2023-04-10 19:05:12 C#

C#学习教程:Winforms中禁用的菜单项仍然显示子项共享在每个项下创建两个子项(1A、1B、2A和2B),然后禁用Item1,我想让1A和1B不显示。事实上,如果我转到Item1,他们就不会。除非我去Item2,等2A和2B显示出来再回到Item1。此时1A和1B都弹出,完全激活。这是一个已知的错误?这是我可以解决的问题吗?有什么建议么?用户希望能够看到当前禁用的东西,或者我只是让东西不可见。遗憾的是,这不是我们可以轻松使用的选项。我可以确认这是通过Framework2.0、3.5和4.0的MenuStrip实现的。我唯一合理的解决方法是将Visible属性设置为false,因此该项目根本不会显示。不理想,但比可访问的子项目要好。当然你也可以创建一个递归禁用所有子项的函数,即使它们出现,它们至少是禁用的,你需要保持以前的状态以确保将来不会重新启用子项,这实际上是预期的被禁用等。文档表明这实际上是发生了什么,但事实并非如此,即使父项被禁用,子项仍保持启用状态。我有同样的问题,想在答案中加几句话。您可能希望在继承自菜单项的单独控件中实现ChrisTaylor提到的解决方法,并对其进行单元测试。在这种情况下,您需要使用Available属性而不是Visible。这是http://blog.excastle.com/2008/12/28/fixing-menustrip-part-2-visible-vs-available-and-a-repro-case/referencesToolStripMenuItem有两个可见性属性:Visible和Available.他们都做同样的事情,只是他们不做。更具体地说,他们的二传手都做同样的事情。所以如果要隐藏菜单项,可以将Visible设置为false,也可以将Available设置为false。相同的。那么为什么同一个东西有两个属性呢?不同之处在于您是否要读取该属性以确定该项目是否已被隐藏。可见的吸气剂不会做你想做的事。永远不要使用它。阅读Visible不会告诉您“我是否将Visible设置为true?”不,那是可用的。(很明显。)不,阅读Visible会告诉您“屏幕上当前弹出的菜单是什么?”它的实用性分数小于或等于Fungi。摘要:始终使用可用。切勿使用可见。唯一的例外是表单设计器-属性网格中未显示可用,因此您仍然只能使用Visible。Greetings,Max以上是C#学习教程:Winforms中禁用的菜单项仍然显示子项共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: