2017-12-15 1 views
0

LoadNewQCDetails(); 메서드가 진행되는 동안 양식을 고정하려고합니다. LoadNewQCDetails(); 메서드를 완료 한 후에 UI가 비활성화/일시 중지 되더라도 사용자가 모든 클릭 이벤트를 트리거합니다. 따라서 LoadNewQCDetails(); 프로세스가 완료 될 때까지 사용자가 UI에서 아무 것도 클릭 할 수 없도록 양식을 고정해야합니다.Freezing windows form C#

내 코드 :

private void button5_Click(object sender, EventArgs e) 
    { 
    //this.SuspendLayout(); 
    //this.Enabled = false; 
    button3.Enabled = false; 
    tabControl1.Enabled = false; 
    groupBox1.Enabled = false; 
    groupBox2.Enabled = false; 
    groupBox3.Enabled = false; 

    GlobalVariable.RefreshArtiCnt = 0; 

    if (comboBox2.Text != "") 
    { 
     // LoadAllQCDetails(); 

     //this function takes nearly 1 minute to complete task 
     LoadNewQCDetails(); 
    } 
    else 
    { MessageBox.Show("Data not found for this condition", "Alert"); } 



    button3.Enabled = true; 
    tabControl1.Enabled = true; 
    groupBox1.Enabled = true; 
    groupBox2.Enabled = true; 
    groupBox3.Enabled = true; 

    //this.Enabled = true; 
    // this.ResumeLayout(); 
} 
+0

그런 다음 양식이 완전히로드 될 때까지 양식을 표시하지 마십시오. Long 코드를 OnShowing 이벤트에 추가하고 데이터가 클 경우 비동기식으로로드하도록 호출 할 수 있습니다. 밤 ...! 간단한 수정 또는이 메소드가'LoadNewQCDetails();를 완료하는 데 오랜 시간이 걸리면 타이머가있는 사용자 정의 양식을 작성하고 ShowDialog() 메소드를 사용하여 양식 모달을 표시하고 최종 사용자에게 참을성이 있음을 알리십시오 로드가 몇 분 정도 소요됩니다 ..'LoadNewQCDetails();'메소드는 어떻게 생겼습니까? 첫 번째 비동기로드 할 수 있습니다 – MethodMan

+0

LoadNewQCDetails 큰 루프 또는 쿼리가 포함되어 있습니까? –

답변

0
this.hide() 
//shows the main page 
    LoadNewQCDetails(); 
this.show() 
0

이 패널의 모든 컨트롤을 추가하고 = 거짓 panel.enabled 않는다; 메서드를 호출하기 직전에 panel.enabled = true; 메소드 호출 후.