Ist es möglich, die ShowDialog-Methode für Formulare zu überladen und ein anderes Ergebnis zurückzugeben?

EDIT: Diese Methode funktioniert tatsächlich sehr gut und ich habe danach gefragt, ob ich später die Lösung gefunden habe. Ich habe den korrekten Aufruf in die überladene ShowDialog () -Methode eingefügt (es ist nicht nur eine Überladung oder sogar eine Überschreibung, aber es funktioniert genauso. Meine neue Frage ist die unten stehende.

Ich habe eine Form, in der Sie auf eine der drei Schaltflächen klicken. Ich habe eine Aufzählung für die zurückgegebenen Ergebnisse definiert. Ich möchte den Anruf tätigen:

MyFormResults res = MyForm.ShowDialog();

Ich kann eine neue ShowDialog-Methode mit folgendem Code hinzufügen:

public new MyFormResults ShowDialog()
{
    //Show modal dialog
    base.ShowDialog(); //This works and somehow I missed this

    return  myResult; //Form level variable (read on)
}

Ich lege eine Variable auf Formularebene für das Ergebnis fest, wenn auf die Schaltflächen geklickt wird:

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

Das einzige, was mir fehlt, ist der Code, der den Dialog (modal) anzeigt und dann mein Ergebnis zurückgibt. Es gibt keinbase.ShowDialog() Funktion, wie mache ich das?

EDIT: Es gibt ein 'base.ShowDialog ()' und es funktioniert. Das ist meine neue Frage hier:

Auch, ist das der beste Weg das alles zu machen und warum?

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage