Можно ли перегрузить метод 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 ()', и она работает. Это мой новый вопрос:

Кроме того, это лучший способ сделать все это и почему?

Спасибо.

11
задан Mike Webb 21 September 2010 в 21:55
поделиться