C# Devexpress导航菜单将屏幕切换到freez

C# Devexpress导航菜单将屏幕切换到freez,c#,navigation,devexpress,validation,menuitem,C#,Navigation,Devexpress,Validation,Menuitem,我有一个devexpress导航菜单项,用于打开用户控件中的数据输入表单。用户控件具有强制用户不要将文本框留空的验证规则。而且,到目前为止效果还不错 但是,当我在数据输入用户控件已经显示的情况下单击其他菜单项时,问题就出现了。这一次,屏幕只是冻结和阻塞,我必须重新启动系统。可能的原因和解决方案是什么?提前谢谢 以下是一些代码快照: //Here is what I've on the main form. It has a panel control called mainPanel t

我有一个devexpress导航菜单项,用于打开用户控件中的数据输入表单。用户控件具有强制用户不要将文本框留空的验证规则。而且,到目前为止效果还不错

但是,当我在数据输入用户控件已经显示的情况下单击其他菜单项时,问题就出现了。这一次,屏幕只是冻结和阻塞,我必须重新启动系统。可能的原因和解决方案是什么?提前谢谢 以下是一些代码快照:

    //Here is what I've on the main form. It has a panel control called mainPanel to display the user controls   
    private XtraUserControl uc;

    private void MainForm_Load(object sender, EventArgs e)
    {
        displayUserControl("Data Entry");
        //...
    }
    private void navigationBar_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
    {
        displayUserControl(e.Link.Caption);
    }

    private void displayUserControl(string link)
    {
        switch (link)
        {
            case "Data Entry":
                uc = new ucDataEntry(); //the data entry user control that freezes the system
                break;
            case "Setting":
                uc = new ucSetting();
                break;
            case "Chart":
                uc = new UCReportChart();
                break;
        }

        mainPanel.Controls.Clear();
        mainPanel.Controls.Add(uc);
        uc.Dock = DockStyle.Fill;
        uc.Show();
    }

每当单击菜单项时,您都会从主面板中清除以前的控件,并将其替换为新控件。也许是ucDataEntry控件中的验证逻辑导致应用程序挂起?你还没有发布该控件的代码,所以我不能确定


另一方面,通过调用mainPanel.Controls.Clear,您正在泄漏内存。此函数的文档说明,对于以这种方式清除的任何控件,必须显式调用Dispose方法。

是否尝试调试以查看其卡住的位置?调试输出显示:线程0x10e8已退出,代码为0 0x0。是否可以发布表单的代码?包含导航菜单和数据输入表单的表单。但是,当我将uc.Dispose放在mainPanel.Controls.Clear之前时,它会引发异常。我怎么处理这些控件?对不起,我已经知道怎么处理了。下面是我用来验证私有void NameTextBox\u Leaveobject发送方EventArgs e{if isNameInCorrectFormatNameTextBox.Text.equalsflse{NameTextBox.SelectAll;NameTextBox.Focus;}}