2017-06-07 30 views
-2

Das Programm soll eine positive Zahl von textbox1.Text nehmen und es an den Konstruktor HR Formular senden, um es als Array-Größe zu verwenden (Fehler mit try Catch behandelt), aber wenn ich die ausführen Programm gibt es Fehler.FormatException erscheint beim Versuch, eine Zeichenkette in Int16 zu konvertieren

//first form(info) 
HR frm = new HR(textBox1.Text); 
frm.show(); 
this.close(); 
//2nd form(HR) 
static int size = 0; 
public HR(string emplyee_num) 
{ 
    InitializeComponent(); 
    size = Convert.ToInt16(emplyee_num);//Error appear her instead 
} 

Allerdings habe ich versucht, die Zeichenfolge dann wandeln sie in HR-Formular zu senden, statt sie senden, wie in Abbildung gezeigt gibt es Fehler in der Leitung für die Umwandlung.

Error in original code

Wie kann ich diesen Fehler beheben und was ist der Grund dafür geworfen?

+3

Wie Sie können Aus Ihrem eigenen Bild sehen Sie, dass der Wert von TextBox1.Text ein leerer String ist und nicht in ein int16 konvertiert werden kann. Wahrscheinlich müssen Sie diesen Wert überprüfen, bevor Sie den HR-Konstruktor aufrufen – Steve

Antwort

1

Ein FormatException wird ausgelöst, weil Text im Eingabesteuerelement keine gültige Zahl ist.

Es wäre besser, zu versuchen, die Eingabe Parsen erste und nur das Formular erstellen, wenn die Eingabe wie folgt gilt:

Int16 size = 0; 
try 
{ 
    size = Convert.ToInt16(textBox1.Text)); 
} 
catch(FormatException) 
{ 
    // Handle exception 
} 

if(size > 0) 
{ 
    HR frm = new HR(size); 
    frm.show(); 
    this.close(); 
} 
else 
{ 
    // Handle error 
} 

Denken Sie daran, HR Konstruktordefinition zu aktualisieren:

public HR(Int16 emplyee_num) 
{ 
    InitializeComponent(); 
    size = emplyee_num; 
} 
+0

Fahren Sie keinen Code mit Ausnahmen. Insbesondere dann, wenn der mögliche Fehler durch korrektere Methoden wie Int16.TryParse gut gehandhabt wird – Steve

Verwandte Themen