2012-11-25 4 views
0

저는 LabelPictureBox 요소를 가지고 있는데,이 요소는 디자이너에서 가시성을 false으로 설정했습니다. 버튼을 누르고 난 후하여 //more code 섹션에 코드와 라벨 변경을 완료 전까지 발생하는 파일 아무것도 선택하지 않을 때 이제시야가 바뀌고 있습니다.

private void openExcelButton_Click(object sender, EventArgs e) 
    { 

     openExcelDialog.Filter = "Excel files|*.xls;*.xlsx;*.csv"; 
     DialogResult result = openExcelDialog.ShowDialog(); 
     if (result == DialogResult.OK) // Test result. 
     { 
      LoadingGIF.Visible = true; 
      LoadingLabel.Text = "Loading..."; 
      LoadingLabel.Visible = true; 
      string file = openExcelDialog.FileName; 

      //more code 
      LoadingGIF.Visible = false; 
      LoadingLabel.Text = "Uploading Finished!"; 



     } 
    } 

:

는 지금은 이것을 시도.

왜 이런 일이 발생합니까?

+1

'클릭'을 처리하기 위해 완료 될 때까지 양식에 더 많은 Windows 메시지가 수신되지 않으므로 컨트롤이 표시되지 않습니다.). "더 많은 코드"전에 Application.DoEvents()를 추가하거나 비동기로 만듭니다. –

+0

에릭을 환영합니다! –

답변

0

주 스레드가 응답하지 않아서 변경 사항이 순차적으로 발생하지 않기 때문입니다. 1 년 전에 프로젝트와 비슷한 문제가 발생했습니다. MS가 제안하는 해결책은 백그라운드 작업자를 사용하여 파일을 열고 조작하여 기본 스레드가 응답하지 않도록하는 것입니다. Microsoft는 여기에 배경 작업자를 사용하는 방법에 대한 꽤 괜찮은 예제를 가지고 있습니다. http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

관련 문제