2013-08-02 45 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。並請接受我的回答 –