2016-12-19 4 views
1

Il devrait supprimer le dernier caractère de la chaînepression de touche TextBox lorsque Backspace presse en C#

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

cette section caractère d'écriture dans la zone de texte

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

c'est la partie backspace qui ne fonctionne pas travail

  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

Je vous recommande d'utiliser l'événement KeyDown, il vous donne plus de contrôle. https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown(v=vs.110).aspx – McNets

+1

Ne pouvez-vous pas simplement sortir de votre touche si l'espace arrière est utilisé, préservant ainsi la fonction réelle des touches? – Darren

Répondre

1

Le problème dans ce code est que vous n'attribuez pas la valeur de la chaîne lorsque vous la modifiez. En effet, String.Remove() retourne une chaîne par opposition à changer la chaîne directement

sssnumber.Remove(sssnumber.Length - 1); 

supprimerons le caractère de la fin de la chaîne, puis disposer du résultat

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

D'autre part, fera de même, mais définissez la valeur de sssnumber à la valeur supprimée.

+0

ça marche. merci :) –

+0

@AdrianManuelCleofe Content de pouvoir aider! vous pouvez accepter la réponse si cela a fonctionné pour vous –