2016-12-19 1 views
1

Es sollte das letzte Zeichen der ZeichenfolgeTextBox keypress Ereignis, wenn Backspace Presse in C# ist

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     do 
     { 

dieser Abschnitt Schreib Zeichen in das Textfeld

  if (e.KeyChar >= 48 && e.KeyChar <= 57) 
      { 
       textBox1.Text += e.KeyChar.ToString(); 
       textBox1.SelectionStart = textBox1.Text.Length; 
      } 

dies ist der Backspace Teil löschen, die nicht der Fall ist Arbeit

  if(e.KeyChar == 8) 
      { 
       sssnumber = textBox1.Text; 
       sssnumber.Remove(sssnumber.Length - 1); 
       textBox1.Text = sssnumber; 
      } 

     } while (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && 
      (e.KeyChar != '.')); 
     e.Handled = true; 
    } 
+0

Ich empfehle Ihnen, KeyDown-Ereignis zu verwenden, gibt Ihnen mehr Kontrolle. https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown(v=vs.110).aspx – McNets

+1

Können Sie nicht einfach aus Ihrem Tastendruck zurückkehren, wenn die Rücktaste verwendet wird, So behalten die Schlüssel tatsächliche Funktion? – Darren

Antwort

1

Das Problem in diesem Code ist, dass Sie den Wert der Zeichenfolge nicht zuweisen, wenn Sie es ändern. Dies liegt daran, String.Remove() einen String zurückgibt, im Gegensatz zu den String Wechsel direkt

sssnumber.Remove(sssnumber.Length - 1); 

den Charakter aus dem Ende der Zeichenfolge entfernen, und dann entsorgen Sie das Ergebnis

sssnumber = sssnumber.Remove(sssnumber.Length - 1); 

Auf der anderen Seite, wird das gleiche tun, aber dann den Wert von sssnumber auf den entfernten Wert setzen.

+0

es funktioniert. Danke :) –

+0

@AdrianManuelCleofe Froh ich könnte helfen! Sie können die Antwort akzeptieren, wenn es für Sie funktioniert hat –

Verwandte Themen