2012-10-10 3 views
0

다른 컨트롤과 함께 버튼 복사가있는 양식이 하나 있습니다. 사용자가 복사 단추를 누르면 BackgroundWorker가 복사 작업을 수행합니다.백그라운드 작업을 수행 할 때 GUI 사용 안함

복사 작업 중에 컨트롤을 사용하지 않도록 설정하고 완료되면 다시 사용하도록 설정합니다. 어쨌든 더 쉬운 방법으로 그것을 할 수 있습니까? 모든 키보드/마우스 입력 사용 안 함 및 사용함.

추신 : 사용자가 Hour-Glass 아이콘을 표시하는 동안 클릭하면 GUI가 무료 인 경우 모든 클릭을 수집해서 실행해서는 안됩니다. GUI가 해제되면 누적 된 모든 클릭 수를 제거해야합니다.

답변

0

모든 컨트롤을 사용하지 않으려면 백그라운드 프로세스가 실행되는 동안 활성화되는 새 양식을 만들 수 있습니다. 이 양식을 사용하여 진행 상황을 표시 할 수 있습니다.

1

처음에 양식 Enable을 false로 설정하고 백그라운드 작업자의 finish 이벤트를 처리 한 다음 양식을 다시 활성화하십시오.

//Lock the form 
this.Enabled = false; 

해야할까요? 이게 당신이 찾는 것이 아니라면, 실례합니다.

편집 :

경우 당신이 여기 어딘가에 등으로부터 애니메이션 .GIF 로더를 얻을 수있는이 일의 애호가 방법을 찾고 - 그림 상자와 투명한 배경, 국경을 form을 만들 수 없습니다 다음 http://ajaxload.info/ 및 . 그런 다음 GIF를 사용하고 시작 부분에 ShowDialog으로 전화하고 처리가 끝날 때 대화 상자를 닫으면 일반적으로 사용되는 것과 비슷한 로더가 표시되고 parent 양식을 잠급니다.

+0

this.Enabled = false; 내가 원하지 않는 전체 양식을 회색으로 표시합니다. 난 그냥 모래 시계를 보여주고 모든 마우스/키보드 입력을 비활성화하고 싶다. –

+0

@AkshayJ 죄송합니다. 그 일을하고 싶지 않다는 것이 분명하지 않았습니다 .GIF 로딩 폼과 관련하여 내 두 번째 의견은 그게 효과가 있습니까? – LukeHennerley

+0

아약스를 사용할 수 있도록이 웹 응용 프로그램이 있습니까? –

0

Form 클래스에는 Enabled 속성도 있습니다.

Form을 사용하지 않도록 설정하면 양식의 모든 컨트롤도 사용할 수 없게됩니다. 이것은 아마도 전체 창을 비활성화하는 가장 쉬운 방법 일 것입니다.

편집 : 당신이 정말로 그냥 그냥 입력을 비활성화 할이 존재 직관적 사용자의 혼란에도 불구하고, 다른 아무것도하지 경우

는 다음과 같은 새 컨트롤을 추가 할 수 있습니다 양식이없는 내용과 투명한 배경이없는 레이블. 이 같은

뭔가 :

// When starting the operation: 
var transparentLabel = new Label(); 
transparentLabel.Bounds = form.Bounds; 
// You may have to set the bacground and border and stuff, I am unsure 
form.Children.Add(transparentLabel); 
// Change cursor to a hourglass as well? 


// When the operation is done 
form.Children.Remove(transparentLabel); 
// Change cursor back 

이 투명 라벨이 포커스를 취득하고 다른 컨트롤에 입력을하지 않습니다 있는지 확인해야합니다.

+0

this.Enabled = false; 내가 원하지 않는 전체 양식을 회색으로 표시합니다. 난 그냥 모래 시계를 보여주고 모든 마우스/키보드 입력을 비활성화하고 싶다. –

+1

예, 전체 양식을 회색으로 표시합니다. 그러나 이것이 바로 여러분의 응용 프로그램 사용자가 Windows 응용 프로그램에서 기대하는 바이며, 따라서 응용 프로그램이해야 할 일입니다! –

+0

하나의 소프트웨어 CCleaner가 있습니다. 정크를 제거하면, 그냥 똑같은 일이 벌어지며 그 유명한 응용 프로그램이 생깁니다. 나는 그들이 어떻게 그것을했는지에 대해 확신하지 못해서이 질문을 올렸다. –

관련 문제