无法关闭窗口

时间:2013-11-25 05:31:50

标签: c# winforms

我有一个容器表单和一个子窗口。子窗口搜索控件并更新该控件的数据库中的可见性状态。但在执行此操作后,我无法关闭子窗口或父窗口,并且它抛出异常,无法将类型为“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/

1 个答案:

答案 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存在问题。