【问题标题】:Devexpress Navigation Menu makes screen to freezDevexpress 导航菜单使屏幕冻结
【发布时间】:2013-01-22 10:42:13
【问题描述】:

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

【问题讨论】:

  • 您是否尝试调试以查看卡在哪里?
  • 调试输出显示:“线程 '' (0x10e8) has exited with code 0 (0x0)”
  • 您可以发布您的表单代码吗? (包含导航菜单和数据输入表单的表单。)

标签: c# navigation devexpress validation menuitem


【解决方案1】:

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

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

【讨论】:

  • 但是,当我将 uc.Dispose() 放在 mainPanel.Controls.Clear() 之前时,它会引发异常。如何处置控件?
  • 抱歉,我知道如何处理了。而且,这是我用来验证 private void NameTextBox_Leave(object sender, EventArgs e) { if (isNameInCorrectFormat(NameTextBox.Text).Equals(False)) { NameTextBox.SelectAll(); NameTextBox.Focus(); } }
猜你喜欢
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多