EDIT: Этот метод действительно отлично работает, и я спросил его, затем нашел решение позже. Я добавил правильный вызов в перегруженном методе ShowDialog() (это не является чрезмерной перегрузкой или даже переопределением, но она работает точно так же. Мой новый вопрос - тот, что внизу.Можно ли перегрузить метод ShowDialog для форм и вернуть другой результат?
У меня есть форму .., в которой вы нажимаете одну из трех кнопок, я определил перечисление для возвращенных результатов, которые я хочу сделать вызов:
MyFormResults res = MyForm.ShowDialog();
я могу добавить новый метод ShowDialog с этим кодом:
public new MyFormResults ShowDialog()
{
//Show modal dialog
base.ShowDialog(); //This works and somehow I missed this
return myResult; //Form level variable (read on)
}
Я установил переменную уровня формы для результата, когда нажатие кнопок:
MyFormResults myResult;
private void btn1_click(object sender, EventArgs e)
{
myResult = MyFormsResults.Result1;
this.DialogResult = DialogResult.OK; //Do I need this for the original ShowDialog() call?
this.Close(); //Should I close the dialog here or in my new ShowDialog() function?
}
//Same as above for the other results
Единственное, что я пропускаю это код, чтобы показать диалоговое окно (модальный), а затем вернуть мой результат. Нет функции base.ShowDialog()
, поэтому как мне это сделать?
РЕДАКТИРОВАТЬ: Существует «base.ShowDialog()», и он работает. Это мой новый вопрос:
Также, это лучший способ сделать все это и почему?
Спасибо.
ОК, довольно смущенный, но есть «база».ShowDialog() ", и он отлично работает. Я пытался« this.base.ShowDialog() ». Это работает отлично. –