2015-09-01 2 views
0

Je suis en train de concevoir un pavé numérique dans Windows Form. S'il vous plaît supposer que j'ai Del clé pour supprimer le caractère de textbox. Lorsque je clique sur le textbox pour la première fois pour le sélectionner et que j'appuie sur la touche Del, le caractère est supprimé correctement par rapport à la position du curseur. Mais après la mise à jour du contenu du texte, la propriété SelectionStart passe à zéro et mon curseur clignotant a disparu. J'ai résolu ce problème en sauvegardant sa valeur temporairement avant de mettre à jour le contenu de textbox et de le modifier à la fin.Pavé numérique virtuel en C# - Existe-t-il un moyen élégant de mettre à jour Textbox.SelectionStart?

tempSelectionStart = enteredTextbox.SelectionStart; //save SelectionStart value temporarily 
enteredTextbox.Text = enteredTextbox.Text.Substring(0, enteredTextbox.SelectionStart - 1) 
        + enteredTextbox.Text.Substring(enteredTextbox.SelectionStart, 
         enteredTextbox.Text.Length - (enteredTextbox.SelectionStart)); 
enteredTextbox.SelectionStart = tempSelectionStart-1; 

Je veux savoir:

  1. Y at-il une façon plus élégante de résoudre le problème?
  2. Comment puis-je maintenir le curseur clignotant dans la zone de texte après la première pression sur la touche?

Merci.

Répondre

2

Utilisez la propriété SelectedText à la place:

private void DeleteButton_Click(object sender, EventArgs e) { 
    if (textBox1.SelectionLength == 0) textBox1.SelectionLength = 1; 
    textBox1.SelectedText = ""; 
    textBox1.Focus(); 
} 

private void BackspaceButton_Click(object sender, EventArgs e) { 
    if (textBox1.SelectionLength == 0) { 
     if (textBox1.SelectionStart > 0) { 
      textBox1.SelectionStart--; 
      textBox1.SelectionLength = 1; 
     } 
    } 
    textBox1.SelectedText = ""; 
    textBox1.Focus(); 
} 
+0

Si vous voulez que Del touche fonctionne comme Backspace et de supprimer le caractère qui est placé côté gauche du curseur, ne soustrayez un de 'SelectionStart'. Y a-t-il un autre moyen? – GntS

+2

Soupir. Vous utilisez toujours la propriété SelectionText. –

+0

Cher Passant, pouvez-vous me guider s'il vous plaît pour le faire par propriété SelectedText? – GntS