Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForm在打开UserControl时冻结_C#_.net_Winforms_Devexpress - Fatal编程技术网

C# WinForm在打开UserControl时冻结

C# WinForm在打开UserControl时冻结,c#,.net,winforms,devexpress,C#,.net,Winforms,Devexpress,我有一个WinForm,它包含显示用户控件的导航菜单。现在一切正常,除了当我试图从另一个UserControl打开一个DevXPress UserControl时表单冻结 以下是我使用的代码: private void btnOpenUserControl2_Click(object sender, EventArgs e) { UserControl2 uc2 = new UserControl2(ID); this.Parent.Controls.Add(uc2);

我有一个WinForm,它包含显示用户控件的导航菜单。现在一切正常,除了当我试图从另一个UserControl打开一个DevXPress UserControl时表单冻结

以下是我使用的代码:

private void btnOpenUserControl2_Click(object sender, EventArgs e)
{  
   UserControl2 uc2 = new UserControl2(ID);

   this.Parent.Controls.Add(uc2);
   uc2.Dock = DockStyle.Fill;
   this.Hide();
   uc2.Show(); 
}

可能的原因是什么?

表单冻结很可能是以下两种情况之一: 在
UserControl2
中,您创建了一个事件(例如
form\u Load
),在该事件中,您有一个无限循环。另一个原因是你有一些处理过的异常,或者一个长流,非常长的流,这会导致你的程序运行缓慢,以至于你认为它卡住了


无论如何,如果您共享您的
UserControl2
代码,这将非常有用。但是如果你在VS中调试程序时暂停程序,当它卡住时,看看它在哪里卡住了,那就更容易了。从这里开始,应该相当容易

解决此问题的方法是在服务器模式下使用GridLookupEdit控件。在这种情况下,gridLookupEdit将仅加载数据库中的一小部分数据,并在滚动网格时继续加载数据。要了解如何在服务器模式下调整gridLookupEdit,请参阅主题。

调用
this.Hide()
?我的假设是在显示UserControl2之前隐藏当前UserControl。但是,我可以把它拿出来,对吗?@aby是的,把它拿出来即使是这样,问题是persists@abyuc2的构造函数或加载事件中有什么内容?没错,我发现绑定超过50000行的DevExpress LookUpEdit控件所花的时间比预期的要长。知道我应该如何处理这个问题吗?@aby,打开另一个线程,在新线程(后台线程)中运行这50000行。这样用户界面就不会冻结。如果你需要帮助,请看这里。请接受我的回答