我有一個自定義的對話框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。
按鈕的dialogresult被相應地設置。
我已經在Dialog winform上設置了AcceptButton和CancelButton。
我不明白爲什麼showdialog方法總是返回DialogResult.Cancel。
UPDATE做了一些測試後,我發現通過調用showdialog = DialogResult.Ok來顯示我的其他自定義對話框窗口工作正常。所以,我檢查了兩者,看它們的屬性設置是否有一些差異,並且完全沒有區別。我不明白。 由於提前,
@ Joe當你點擊它時,不是應該設置DialogResult窗體的按鈕之一嗎?我確定將OKBtn按鈕(AcceptButton)設置爲DialogResult.Ok並將CancelBtn按鈕(CancelButton)設置爲DialogResult.Cancel。我已經通過MSDN庫並遵循他們的示例。不過,它總是返回DialogResult.Cancel。 – ThN