2010-12-17 10 views
2

labelTotal enthält den Wert der Klasse Keypad (C# WinForms). ToString wurde überschrieben, um labelTotal.Text zurückzugeben.C#: Warum gibt ShowDialog(). ToString() erwarteten String zurück?

namespace Gui3 
{ 
    public partial class Keypad : Form 
    { 
     public Keypad() 
     { 
      InitializeComponent(); 
     } 
     public override String ToString() {return labelTotal.Text;} 
     private void buttonOk_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 
     ... 

Warum nicht keypad.ShowDialog(). ToString() return labelTotal.Text?

namespace Gui3 
{ 
    public partial class Setup : Form 
    { 
     public Setup() 
     { 
      InitializeComponent(); 
     } 
     private void buttonStartDepth_Click(object sender, EventArgs e) 
     { 
      Keypad keypad = new Keypad(); 
      ////////// Not working as expected ///////// 
      String total = keypad.ShowDialog().ToString(); 
      ... 

Antwort

7

Da die ShowDialog()-Methode einen System.Windows.Forms.DialogResult Enumerationswert zurückgibt, nicht die Instanz Ihres Formulars. ToString() wird für den Enum-Wert aufgerufen, der von dieser Funktion zurückgegeben wird.

Sie könnte so etwas wie die versuchen folgende (annimmt keypad wird DialogResult.OK richtig zurück):

private void buttonStartDepth_Click(object sender, EventArgs e) 
{ 
    Keypad keypad = new Keypad(); 

    if (keypad.ShowDialog() == DialogResult.OK) 
    { 
     String total = keypad.ToString(); 
    } 
} 
3

Da Sie nicht KeyPad.ToString() aufrufen, rufen Sie DialogResult.ToString() auf. ShowDialog() gibt ein DialogResult zurück.

2

Die Methode, die Sie ShowDialog() tatsächlich zeigt das Dialog

Ich denke, fordern, dass Sie was wollen, ist

2

ShowDialog gibt ein DialogResult zurück, keinen Verweis auf das Formular.

Versuchen Sie

Ändern
String total; 

if (keypad.ShowDialog() == DialogResult.OK) 
{ 
    total = keypad.ToString(); 
} 
+0

Warum rufst du 'Showdialog()' zweimal? – Donut

+0

Weil ich ein Idiot bin! korrigiert, danke – Martin

Verwandte Themen