如何在代码中将visible设置为true?

时间:2016-07-04 05:17:26

标签: c# winforms toolstripdropdown

我在Windows窗体应用程序中有一些代码。我想在c#代码中更改toolStripMenuItem的下拉项目的可见性。我设置了可见性,但是当我在代码中设置断点时,项目的可见性不会改变

这是我的代码:

foreach (ToolStripMenuItem it in _frmMain.menuStripMain.Items)
{

   foreach (ToolStripMenuItem i in it.DropDownItems)
   {

       if (i.Text == this._listAppSchema[0].ObjectName.ToString())
       {
          i.Visible = true;
       }
       else
       {
          i.Visible = false;
       }                                                
   }                                           
}

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

Visible是一个复杂的属性。它没有设置和读取相同的内容。

如果您设置为truefalse,则表示该对象是否可见。但是,当您读取时,它会显示该控件的可见性是设置为true还是false,但如果链中的任何父级,它将显示为false也隐藏了。

因此设置和读取它是一回事:即使您将其设置为true,当您将其读回时,它可能会在调试器中出现false(如果链中有任何父项,则会再次出现true隐藏):当所有父母都可见时,它将变为ToolStripItem

但是,对于Visible,请使用Available属性而不是{{1}}:这应该是您所期望的。文档(我链接)专门讨论了这个问题:

  

Available属性与Visible属性不同,Available表示是否显示ToolStripItem,而Visible表示是否显示ToolStripItem及其父元素。将Available或Visible设置为true或false会将other属性设置为true或false。