首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows窗体- ToolStripItem Visible属性始终设置为false

Windows窗体- ToolStripItem Visible属性始终设置为false
EN

Stack Overflow用户
提问于 2013-03-28 21:58:46
回答 2查看 9K关注 0票数 8

我正在开发一个MDI Windows Forms应用程序。我的父窗体有ToolStrip菜单和一些ToolStripDropDownButtons。我想根据用户的权限相应地更改ToolStripDropDownButtonVisible属性或更改为它拥有的一些ToolStripItems (子按钮)。

下面是我用来管理这个的方法的一部分:

代码语言:javascript
复制
private void SetToolStripDropDownVisibility(ToolStripDropDownButton mainBtn, params ToolStripItem[] item)
{
     mainBtn.Visible = false;
     foreach (ToolStripItem tempItem in item)
     {
         tempItem.Visible = true;
     }
}

我将ToolStripDropDownButton和所有其他“子按钮”作为参数列表作为第一个参数进行传递。但是,当我在部件可见中进入调试模式时,tempItem foreach (ToolStripItem tempItem in item)属性被标记为false。但是,在设计器中,此属性设置为true。您可以看到,我甚至尝试显式地将值更改为true - tempItem.Visible = true;,但似乎此行什么也没做。Visible的值仍然是false,我不能更改它。

这只是该方法的开始,我想不出其他代码会搞乱ToolStrip项目。我试图将mainBtn.Visible的值更改为true或false,认为可能存在任何联系,但似乎这不是问题所在。所以,你知道为什么会发生这种情况吗,为什么我不能改变Visible的值,当然还有任何方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-01 19:22:51

解决方案很简单,但并不明显。当我们必须使用ToolStripItems (它是ToolSTripDropDownButton的一部分)来解决可见性问题时,我们必须使用Available属性。它就是为这个目的而设计的。希望有人通过阅读这篇文章,花更少的时间来处理这个问题!

票数 23
EN

Stack Overflow用户

发布于 2013-03-28 22:02:10

以下代码将遍历menuStrip1中的所有toolstripitems

代码语言:javascript
复制
           List<ToolStripMenuItem> allItems = new List<ToolStripMenuItem>();
            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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15683820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档