Devexpress导航菜单使屏幕冻结

时间:2013-01-22 10:42:14

标签: c# navigation devexpress validation menuitem

我有一个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();
    }

1 个答案:

答案 0 :(得分:0)

每次单击一个菜单项时,您将清除主面板中的上一个控件,并将其替换为新控件。也许是ucDataEntry控件中的验证逻辑导致应用程序挂起? (您尚未发布该控件的代码,因此我无法确定。)

顺便说一下,通过调用mainPanel.Controls.Clear(),你正在泄漏内存。该函数的文档声明必须为以这种方式清除的任何控件显式调用Dispose()方法。