Почему ShowDialog всегда возвращает DialogResult.Cancel?
У меня есть диалоговое окно winform. На нем у меня есть ярлык, текстовое поле и 2 кнопки (ОК и Отмена). Он также объявляет и определяет перегруженные методы выполнения для передачи другого списка параметров.
Диалог Winform вызывается следующим образом:
var theDialog := new InputMsgBox;
if theInputB.Execute('Awesome Stackru','Enter Text?',s,var s) = DialogResult.OK then
begin
Invalidate;
SetText(s);
end;
Диалог Winform execute определяется следующим образом:
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;
Когда метод execute возвращает обратно вызывающей стороне, он всегда возвращает DialogResult.Cancel, даже когда вы нажимаете OKBtn.
Результат диалога кнопок устанавливается соответственно.
Я установил AcceptButton и CancelButton в диалоговом окне WinDog.
Я не могу понять, почему метод showdialog всегда возвращает DialogResult.Cancel.
ОБНОВЛЕНИЕ После некоторого теста я обнаружил, что мое другое пользовательское диалоговое окно работает нормально при отображении, вызывая showdialog = DialogResult.Ok. Итак, я проверил их обоих, чтобы увидеть, есть ли различия в настройке их свойств, и нет абсолютно никакой разницы. Я не понимаю это Заранее спасибо,
2 ответа
Я понял мою проблему. Вот почему Форма диалога всегда возвращала Отмена DialogResult. Для моего собственного диалогового окна я также реализовал метод события Form_Closing. По-видимому, у вас не должно быть события, которое выкинет счетчик программы из его шагов при открытии диалога с помощью метода ShowDialog. Таким образом, он был уже закрыт до того, как получил шанс прочитать его DialogResult. Поэтому моя программа видела DialogResult только для моего диалогового окна.
После того, как я удалил метод события Form_Closing, он работает так, как он должен.
Вместо того чтобы удалять вопрос, я отвечаю на него и чувствую, что это поможет другим.
Вы должны установить другой DialogResult
- например, установив DialogResult
собственность вашего AcceptButton
в DialogResult.OK
,
Или установите его программно, часто в обработчике событий кнопки.
я представляю себе DialogResult.Cancel
по умолчанию, и вы никогда не меняете его.