Winforms App에는 두 개의 폼 클래스 (Form1 및 Form2)가 있습니다.적어도 하나의 모달 창이 열렸을 때 winforms 앱을 최소화하는 방법
Form1이이 같다 :
형식 2이 같다 (하여 ShowInTaskBar = 거짓)
그리고 Form1에 코드 :
Form2 someForm = new Form2();
private void btOpenAnotherWindow_Click(object sender, EventArgs e)
{
if (someForm.ShowDialog(this) == DialogResult.OK)
MessageBox.Show("OK!!!");
else
MessageBox.Show("Not OK.");
}
즉, 버튼이있는 창 을 모달로 열어서 다른 창이 클릭되면 "확인"또는 "취소"버튼을 클릭하여 두 번째 창을 닫을 때까지 기다립니다. 그리고 어떻게 닫혔는지에 따라 액션 (여기서는 MessageBox.Show() 호출로 표현됨)을 번갈아 수행하십시오.
내가이 필요합니다 사용자는 한 번에 하나의 창을 사용할 수 있습니다
- . (Modal forms, 그래서 Show() 대신 ShowDialog()를 사용했습니다)
- 양식이 닫히면 양식 닫는 방법에 따라 뭔가를하십시오 ("if (someForm.ShowDialog (this) ...)")
- 는 (사용자로) 전체 APP를 최소화 할 수 있도록.
- 가 "unminimize"제대로 이전 상태로 응용 프로그램 수 있으려면.
- (모든 최소화) WIN + M에 대응하는 프로그램 . : 키 조합
위의 예는 두 가지 방법으로 실패 0
- WIN + M에 응답하지 않습니다 (필요 5)
- (필요 3) 제목 표시 줄 단추를 클릭 최소화하지만, 주요 폼 (Form1)는 않기 때문에이 환상 경우 응용 프로그램은 최소화 할 것 최소화하지 않고 다른 열린 창 뒤에 숨겨져 있습니다. 빈 바탕 화면으로 예제를 실행하는 것은 실제로 일어나는 일을 보여줍니다. 사진은 다음과 같습니다
후 :
이
전에 버튼을 클릭 최소화
참고 : 기본 폼은
- Form2 화면의 왼쪽 구석에 있습니다.
형식 2는 만발한 창 (안 대화 상자 창 자체)이며, 나는 그것이 닫혀 단지까지와 상호 작용하는 사용자가 필요로하고 나는 또한 경우에 전체 응용 프로그램을 miminize 할 수 있도록 사용자가 필요합니다 그는 그것을 필요로한다.
실제 양식을 여기 게시 할 수는 없지만,이 모형보다 더 선명합니다.
여러 수준의 모달 창 (이 예에서와 같이 두 개뿐 아니라)에서 작동하는 솔루션이 필요합니다. 어떤 제안?
나는 전체 창 (= false를 this.enable) 해제하고 대신 ShowDialog를의 표시를 사용하지만, 그는 "열려있는 모든 창을 최소화"문제에 아무것도하지 않습니다 수 있습니다. –