2014-02-17 2 views
1

두 가지 form1과 form2가 있습니다. form1의 버튼을 사용하여 form2로 이동합니다. form2에는 버튼 컨트롤이 있습니다. 버튼을 클릭하면 messageBox가 표시됩니다. messageBox가 오면 form1의 포커스도 잃어 버렸지 만 form1의 포커스를 잃어 버리지 않아야합니다. 나는 form2에 관심이 없다.첫 번째 양식에 초점 맞추기

+0

dear use form1.BringToFront() – Developerzzz

+0

그래서 사용자가 form2에서 해당 버튼을 클릭하면 메시지 상자가 표시됩니다. messagebox가 닫히면 form1이 보여야하고 form2가 닫혀 있어야합니까? – Mino

+0

@Developerzzz 옵션이 없습니다. form1.BringToFront() –

답변

1

메시지 상자가 대화 상자처럼 보이지 않는 방법은 없습니다. Eliran Pe'er가 말했듯이, 라벨과 버튼이있는 메시지 상자와 같은 Form을 만들어서 이렇게 사용해야합니다.

MessageForm form = new MessageForm.Show(); 

ShowDialog를 사용하는 경우 MessageBox와 동일한 작업이 수행됩니다.

양식 1에서 TopMost property = true을 사용하면 무엇이든 상관없이 항상 앞을 유지할 수 있습니다. 그러나 이것은 열려있는 다른 모든 프로그램 위에 양식을 보관할 것입니다.

또 다른 해결 방법은 양식 상자 1을 BringToFront()로 호출 할 수있는 messagebox가 사용자에 의해 닫힌 후 (이것은 나쁜 옵션이 아닙니다)입니다. 이렇게하려면 Form1의 인스턴스를 Show 메서드의 form2에 전달하면됩니다. form2 생성자에서 해당 매개 변수를 사용하십시오.

1

MessageBox가 포커스를받지 못하도록하는 쉬운 방법이 없다고 생각합니다. MessageBox가 대화 상자이기 때문에 그렇게 생각하지 않습니다. (대화 상자가 닫힐 때까지 프로그램에서 포커스를받습니다.)

내가 생각할 수있는 유일한 방법은 MessageBox처럼 보이고 대신 사용하는 새로운 폼을 만드는 것입니다.

+0

예, MessageBox는 닫을 때까지 포커스를 유지하는 모달 창입니다. –

1

는 형식 2을 표시하려면이

if(MessageBox.Show("something")==DialogResult.OK) 
    { 
     form1.Focus(); 
    } 

또는

if(MessageBox.Show("something")==DialogResult.OK) 
{ 
    form1.Select(); 
} 
+0

귀하가 말한 옵션이 없습니다. 나는 이것을 체크했지만 여전히 작동하지 않는다 .Form1.ActiveForm.Activate(); Form1.ActiveForm.Select(); Form1.ActiveForm.Focus(); –

0

당신이 사용하고 ShowDialog를() 메서드 또는 표시() 메소드를 시도? ShowDialog() 메서드를 사용하는 경우 Show() 메서드로 수정하십시오. ShowDialog를() 메소드를 사용하면

form2.Show() 

표시하기 위해, 당신은 서브 폼 (Form2를)

을 닫을 때까지이 방법을 사용하고 있는지 확인, 기본 폼 (Form1)에 포커스를 변경할 수 없습니다 것이기 때문에 form2.

+0

show();를 사용하고 있습니다. –