2017-01-07 3 views
1

아래 코드를 사용하여 대화 상자가있는 MessageBox를 만듭니다. 기본적으로 예 버튼에는 포커스가 있습니다. 우연히 스페이스 키를 누르면 대화 상자가 예를 선택한 것으로 인식합니다. 이벤트를 시작하기 위해 리턴 키를 누른 경우에만 필요합니다. 스페이스 키가 응답을 제출하지 못하도록하는 방법이 있습니까?DialogResult MessageBox disable 스페이스 키 (스페이스 바)가 응답을 제출하지 않습니다.

DialogResult dialogResult = MessageBox.Show(sMsg, "Title", MessageBoxButtons.YesNo); 
if(dialogResult == DialogResult.Yes) 
{ 
    // do something 
} 
else if (dialogResult == DialogResult.No) 
{ 
    // do something else 
}       

답변

0

Visual 빈센트는 MessageBox.Show()에 의존하는 대신 내 자신의 대화 상자 형식을 만드는 것이 더 낫다는 것을 분명히했습니다.

1

이 시도 :

MessageBox.Show(this, "MessageText", "MessageCaption", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No, MessageBoxOptions.None); 

은 "MessageBoxResult.No"매개 변수는 기본 대화의 결과 값입니다.

+0

감사합니다. David. MessageBox.Show (sMsg, sTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification, false)를 사용했습니다. 그러면 기본 단추가 예에서 아니오로 변경되었습니다. 그러나 공간 키가 응답을 제출하지 못하게하는 것이 좋습니다. 이 MessageBox에 다른 폼을 만들어서 각 버튼의 키 이벤트를 처리 할 수는 있지만 이것은 나에게 낭비입니다. –

+0

@Nick_F : 스페이스 바 키를 가로 채기 위해 글로벌 키보드 후크를 만드는 것보다 쉽습니다 (다른 옵션이지만 어렵습니다). –

+1

@Nick_F : 지난 몇 년간 다른 포럼에서 Windows 대화 상자의 동작을 수정하려는 많은 질문을 보았습니다. 대답은 간단합니다 : 불가능합니다 (또는 더 정확하게 : 일반 개발자에게는 너무 어렵습니다). 따라서 다른 동작/모양을 원할 때 자신의 대화 상자를 만드는 것이 항상 좋습니다. –