2017-09-11 1 views
0

Ich erhalte immer eine Fehlermeldung, wenn ich versuchte, textBox2 zu löschen. Wie kann ich das lösen?Textbox kann nicht mit Knopfdruck gelöscht werden

private void textBox2_TextChanged(object sender, EventArgs e) 
    { 
     string HexKey = this.textBox2.Text; 
     if(textBox2.Focused) 
     int key = Convert.ToInt32(HexKey, 16); 
    } 

private void button2_Click_1(object sender, EventArgs e) 
    { 
     textBox2.Clear(); 
    } 

[Fehler]: System.ArgumentOutOfRangeException: ‚Der Index liegt außerhalb des zulässigen Bereichs. Muss nicht negativ und kleiner als die Größe der Sammlung sein. Parametername: start‘

[Lösung]:

private void textBox2_TextChanged(object sender, EventArgs e) 
    { 
     string HexKey = this.textBox2.Text; 
     if(textBox2.Focused) //add this line in 
     int key = Convert.ToInt32(HexKey, 16); 
    } 
+0

Es gibt keine Möglichkeit, dass dieser Code das Problem reproduziert. Für diese Funktionsaufrufe gibt es keinen Parameter 'startIndex'. –

Antwort

0

Firzanah, Wenn Sie klar textBox2, das Textchanged-Ereignis ausgelöst wird. Da zu diesem Zeitpunkt nichts in Ihrem Textfeld vorhanden ist, tritt ein Fehler auf, wenn Sie versuchen, nichts in ein int32 zu konvertieren. Um dieses Problem zu lösen, fügen Sie einen if(textBox2.Focused) Zustand zu Ihrem Änderungsereignis oder, noch besser, nur prüfen, ob, was du hast ein int beginnen mit:

private void textBox2_TextChanged(object sender, EventArgs e) 
     { 
      int n; 
      bool isNumeric = int.TryParse(textBox2.Text, out n); 
      if (!isNumeric) return; 
      string HexKey = textBox2.Text; 
      int key = Convert.ToInt32(HexKey, 16); 
     } 
0

Was wahrscheinlich passiert, ist, dass das klare Ereignis auslöst richtig und gleich danach löst auch dein onChange-Ereignis aus und sendet eine leere Zeichenfolge an den Code, von wo die Ausnahme kommt.

Ich schlage vor, Ihren Code mit Try ... Catch-Blöcke zu umgeben, so wie der Ursprung der Ausnahme ist klarer oder als @cody grau vorgeschlagen, einfach den Debugger verwenden.

+1

Try/Catch-Blöcke machen den Ursprung einer Ausnahme nicht klarer. Wenn überhaupt, verschleiern sie es. Mit einem Debugger können Sie leicht die Quelle einer Ausnahme finden. –

1

Fehler wird genereate, weil Sie nichts Wert auf eine int32 konvertieren und bitte versuchen Sie es mit diesem Code

private void textBox2_TextChanged(object sender, EventArgs e) 
{ 
    int n,key; 
    if (!int.TryParse(txtBox2.Text, out n)) 
     return; 
    else 
     key = Convert.ToInt32(txtBox2.Text, 16); 
} 

private void button2_Click_1(object sender, EventArgs e) 
{ 
    textBox2.Text=""; 
} 
Verwandte Themen