我有一个容器表单和一个子窗口。子窗口搜索控件并更新该控件的数据库中的可见性状态。但在执行此操作后,我无法关闭子窗口或父窗口,并且它抛出异常,无法将类型为“System.Windows.Forms.ToolStripSeparator”的对象强制转换为类型为“System.Windows.Forms.ToolStripMenuItem”。我试图抓住铸造完成的异常。但它没有在那里显示例外。请帮忙
以下是循环菜单的代码。
for (int i = 0; i < toolStripItems.Count; i++)
{
ToolStripMenuItem mi = toolStripItems[i] as ToolStripMenuItem;
if (mi != null)
{
oldMenuToolTips.Add(mi.Name, mi.ToolTipText);
mi.ToolTipText = mi.Name;
if (mi.DropDownItems.Count > 0)
{
ShowToolStipItems(mi.DropDownItems);
}
PageControls.Items.Add(mi.Name);
}
}
我正在尝试本教程中的代码https://www.simple-talk.com/dotnet/windows-forms/controls-based-security-in-a-windows-forms-application/
答案 0 :(得分:0)
子窗口中有表单关闭事件处理程序代码。我从
修改了它foreach (ToolStripMenuItem mi in toolStripItems)
{
if (mi.DropDownItems.Count > 0)
{
RestoreMenuStripToolTips(mi.DropDownItems);
}
if (oldMenuToolTips.ContainsKey(mi.Name))
{
mi.ToolTipText = oldMenuToolTips[mi.Name];
}
else
{
mi.ToolTipText = string.Empty;
}
}
到
for (int i = 0; i < toolStripItems.Count; i++)
{
ToolStripMenuItem mi = toolStripItems[i] as ToolStripMenuItem;
if (mi != null)
{
if (mi.DropDownItems.Count > 0)
{
RestoreMenuStripToolTips(mi.DropDownItems);
}
if (oldMenuToolTips.ContainsKey(mi.Name))
{
mi.ToolTipText = oldMenuToolTips[mi.Name];
}
else
{
mi.ToolTipText = string.Empty;
} // end else
}
}
tooltripseparator存在问题。