사용자 정의 대화 상자 winform이 있습니다. 그것에 레이블, 텍스트 상자 및 2 개의 단추 (확인 및 취소)가 있습니다. 또한 오버로드 된 을 선언하고 다른 매개 변수 목록을 전달하기위한 메서드를 실행합니다.왜 ShowDialog는 항상 DialogResult.Cancel을 반환합니까?
var theDialog := new InputMsgBox;
if theInputB.Execute('Awesome StackOverflow','Enter Text?',s,var s) = DialogResult.OK then
begin
Invalidate;
SetText(s);
end;
대화의 WinForm는 다음과 같이 정의된다 실행하여 다음과 같이
대화의 WinForm이라고합니다
method InputMsgBox.Execute(Title, theMessage, defaultanswer:string;var thevalue:string): DialogResult;
begin
result := DialogResult.Cancel;
Requesttext.Text:=themessage;
Requesttext.Enabled:=true;
Requesttext.Visible:=true;
InputTextBox.Text:=defaultanswer;
InputTextBox.Enabled:=true;
InputTextBox.Visible:=true;
CancelBtn.Enabled:=true;
CancelBtn.Visible:=true;
Okbtn.Enabled:=true;
Okbtn.Visible:=true;
self.ShowDialog;
Result := self.DialogResult;
thevalue:=InputTextBox.Text;
end;
방법을 실행 호출자에게 반환 항상 DialogResult.Cancel 때에도을 반환 OKBtn을 클릭합니다.
버튼 대화 상자 결과가 이에 따라 설정됩니다.
대화 상자 winform에 AcceptButton 및 CancelButton을 설정했습니다.
showdialog 메서드가 항상 DialogResult.Cancel을 반환하는 이유를 알 수 없습니다.
UPDATE 몇 가지 테스트를 한 후 showdialog = DialogResult.Ok를 호출하여 표시 할 때 다른 맞춤 대화 상자 창이 잘 작동한다는 것을 알았습니다. 그래서, 둘 다 그들의 속성 설정에 약간의 차이가 있는지 확인하고 절대적으로 차이가 없는지 확인했습니다. 나는 그것을 이해하지 못한다. 사전에 감사합니다,
@ Joe 클릭 할 때 DialogResult 형식을 설정해야하는 버튼 중 하나가 아닙니까? OKBtn 버튼 (AcceptButton)을 DialogResult.Ok로 설정하고 CancelBtn 버튼 (CancelButton)을 DialogResult.Cancel로 설정했습니다. 나는 MSDN 라이브러리를 살펴본 후 그들의 예를 따랐다. 그래도 항상 DialogResult.Cancel을 반환합니다. – ThN