Windows窗体 – ToolStripItem可见属性始终设置为false
我正在研究MDI Windows Forms
应用程序。 我的父窗体有ToolStrip
菜单和一些ToolStripDropDownButtons
。 我想更改ToolStripDropDownButton
的Visible
属性,或者根据用户的权限更改它具有的某些ToolStripItems
(子按钮)。
以下是我编写的用于管理此方法的方法的一部分:
private void SetToolStripDropDownVisibility(ToolStripDropDownButton mainBtn, params ToolStripItem[] item) { mainBtn.Visible = false; foreach (ToolStripItem tempItem in item) { tempItem.Visible = true; } }
我作为第一个参数传递ToolStripDropDownButton
和所有其他“子按钮”作为参数列表。 但是当我在部分foreach (ToolStripItem tempItem in item)
进入调试模式时, tempItem
Visible属性被标记为false。 但是在设计器中,此属性设置为true。 你可以看到我甚至尝试明确地将值更改为true – tempItem.Visible = true;
但好像这条线似乎无所作为。 Visible
的值仍为false
,我无法更改它。
这只是方法的开头,我想不出其他可能搞乱ToolStrip
项目的代码。 我试图将mainBtn.Visible
的值mainBtn.Visible
为true或false,认为可能存在任何连接,但似乎这不是问题。 所以任何想法为什么会发生这种情况,为什么我无法改变Visible
值,当然也无法改变它。
解决方案很简单,但并不明显。 当我们必须使用属于ToolSTripDropDownButton
ToolStripItems
并解决可见性问题时,我们必须使用普通按钮来解决它,我们必须使用Available
属性。 它专为此目的而设计。 希望有人通过阅读这个来减少处理这个问题的时间!
以下内容将通过menuStrip1
所有toolstripitems
menuStrip1
:
List allItems = new List (); foreach (ToolStripMenuItem toolItem in menuStrip1.Items) { allItems.Add(toolItem); //add sub items allItems.AddRange(GetItems(toolItem)); } foreach (ToolStripMenuItem item in allItems) { //make your toolstripMenuItem invisible or whatever you want to do with it. } allItems.Clear();
将menuStrip1
更改为您调用toolstrip
任何内容。