Devexpress导航菜单使屏幕冻结
本文关键字:屏幕 冻结 菜单 导航 Devexpress | 更新日期: 2023-09-27 17:55:12
我有一个 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() 方法。