2013-08-02 42 views
1

我有一个WinForm,其中包含显示UserControls的导航菜单。现在一切正常,除非表单冻结,当我尝试从另一个UserControl打开Devexpress UserControl时。WinForm冻结,同时打开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(); 
} 

这可能是什么可能的原因?

+0

调用'this.Hide()'的原因是什么? –

+0

我的假设是在UserControl2显示之前隐藏当前的UserControl。但是,我可以解决这个问题,对吧? – aby

+0

@aby yes取出来 – Ehsan

回答

0

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

0

形式冻结很可能是两件事情之一:在 你UserControl2你hndle(例如form_Load)的事件,而在此情况你有一个无限循环。另一个原因是你有一些乱糟糟的例外,或者是一个长流,很长的流,导致你的程序运行缓慢,所以你认为它卡住的速度太慢。

无论如何,它是非常有用的,如果你分享你的UserControl2代码。但更容易的是,如果你只是暂停程序,而在VS中调试它时,它会卡住,看看它在哪里被卡住。从那里它应该是相当容易的

+0

你是对的,我发现绑定DevExpress LookUpEdit控件的行数超过50,000行比预期的要长。任何想法我应该如何处理这个问题? – aby

+0

@aby,打开另一个线程并在该新线程(后台线程)中运行这50,000行。这样UI不会冻结。如果你需要帮助,看看这里 - http://stackoverflow.com/questions/363377/how-do-i-run-a-simple-bit-of-code-in-a-new-thread。并请接受我的回答 –