我在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;
}
}
}
如何解决这个问题?
答案 0 :(得分:3)
Visible
是一个复杂的属性。它没有设置和读取相同的内容。
如果您将设置为true
或false
,则表示该对象是否可见。但是,当您读取时,它会显示该控件的可见性是设置为true还是false,但如果链中的任何父级,它将显示为false
也隐藏了。
因此设置和读取它是一回事:即使您将其设置为true
,当您将其读回时,它可能会在调试器中出现false
(如果链中有任何父项,则会再次出现true
隐藏):当所有父母都可见时,它将变为ToolStripItem
。
但是,对于Visible
,请使用Available
属性而不是{{1}}:这应该是您所期望的。文档(我链接)专门讨论了这个问题:
Available属性与Visible属性不同,Available表示是否显示ToolStripItem,而Visible表示是否显示ToolStripItem及其父元素。将Available或Visible设置为true或false会将other属性设置为true或false。