Tôi có biểu mẫu hộp thoại tùy chỉnh được thực hiện. Trên đó tôi có một nhãn, hộp văn bản và 2 nút (OK và Cancel). Nó cũng khai báo và định nghĩa quá tải thực hiện các phương thức để truyền danh sách tham số khác nhau.Tại sao ShowDialog luôn trả về DialogResult.Cancel?
Dialog Winform được gọi như sau:
var theDialog := new InputMsgBox;
if theInputB.Execute('Awesome StackOverflow','Enter Text?',s,var s) = DialogResult.OK then
begin
Invalidate;
SetText(s);
end;
Dialog Winform execute được định nghĩa như sau:
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;
Khi thực hiện phương thức trả về lại cho người gọi, nó luôn luôn trả DialogResult.Cancel ngay cả khi bạn bấm vào OKBtn.
Hộp thoại của hộp thoại được đặt tương ứng.
Tôi đã đặt AcceptButton và CancelButton trên biểu tượng Dialog.
Tôi không thể hiểu tại sao phương thức showdialog luôn trả về DialogResult.Cancel.
CẬP NHẬT Sau khi thực hiện một số kiểm tra, tôi phát hiện ra rằng cửa sổ hộp thoại tùy chỉnh khác của tôi hoạt động tốt khi hiển thị bằng cách gọi showdialog = DialogResult.Ok. Vì vậy, tôi đã kiểm tra cả hai người trong số họ để xem liệu có một số khác biệt trong thiết lập thuộc tính của họ và hoàn toàn không có sự khác biệt. Tôi không hiểu. Cảm ơn trước,
@ Joe Không phải là một trong các nút được cho là để đặt DialogResult biểu mẫu khi bạn nhấp vào nó? Tôi có nút OKBtn (AcceptButton) được đặt thành DialogResult.Ok và nút CancelBtn (CancelButton) được đặt thành DialogResult.Cancel. Tôi đã đi qua thư viện MSDN và đã làm theo ví dụ của họ. Tuy nhiên, nó luôn trả về DialogResult.Cancel. – ThN