2010-11-11 7 views
6

En utilisant C#, comment puis-je sélectionner tout le texte dans une zone de texte lorsque je double-clique? Mon texte contient des espaces "Ceci est un test", lorsque je double-clique par défaut, un seul mot est mis en surbrillance, comment puis-je mettre en évidence tout le texte? Ce que j'essaie de réaliser est un moyen rapide pour les utilisateurs d'effacer la texbox du texte, le texte dépasse la longueur de la boîte de sorte que vous ne pouvez pas sélectionner la fin et faire glisser pour supprimer, vous devez cliquer et utilisez le retour arrière et supprimez les touches pour effacer le texte.C# Comment puis-je sélectionner tout le texte dans une zone de texte lorsque je double-clique?

Merci Alison

+0

La "solution" courante consiste à tout sélectionner (voir réponse Ardman) dans l'événement OnFocus. Un double-clic pour sélectionner tout le texte n'est pas très courant, vos utilisateurs ne le sauront donc pas. –

+0

Vous pouvez également choisir de sélectionner tout le texte dans la zone de texte lorsqu'il reçoit le focus (soit avec la touche de tabulation, soit avec la souris, comme la barre d'adresse d'un navigateur Web). Cela fournirait toujours un moyen rapide de supprimer le texte sans perdre ce que beaucoup d'utilisateurs considéreraient comme le comportement par défaut de pouvoir cliquer deux fois pour sélectionner un mot. –

+0

Il peut aussi être utile d'apprendre à vos utilisateurs 'Ctrl + a', ou de faire du texte à la TextBox (ce qui pourrait ne pas être possible en raison de problèmes immobiliers) – vlad

Répondre

4
TextBox tb = new TextBox(); 
tb.SelectAll(); 

Le TextBox a une méthode SelectAll que vous pouvez utiliser. Ajoutez-le dans votre gestionnaire d'événements double-clic.

1

En supposant que nous parlons WindowsForms, tout ce que vous avez à faire est de joindre un gestionnaire d'événements à l'événement DoubleClick et appelez SelectAll

private void sampleTextBox_DoubleClick(object sender, EventArgs e) 
{ 
    sampleTextBox.SelectAll(); 
} 
+0

Vous pourriez faire à la place: ((TextBox) expéditeur) .SelectAll(); ... qui est un peu plus propre – nashwan

1

Le contrôle textbox expose les propriétés SelectionStart et Longueur de sélection.

Il vous suffit simplement de câbler l'événement double clic de la zone de texte pour définir ces propriétés. SelectionStart sera 0. SelectionLength sera la longueur du texte (facilement déterminée par la propriété Text).

Lors de l'édition: La solution ci-dessus pour utiliser SelectAll() est beaucoup plus facile.

+3

Bit overkill quand il y a une méthode SelectAll. –

+0

En effet. Je me souviens de SelectionStart & Length à partir d'un code où j'avais besoin de mettre en évidence une partie du texte. Je n'ai même pas réalisé qu'il y avait une solution beaucoup plus facile. C'est ce que l'intellisense est pour. –

2

Les clics Triple pourrait sélectionner l'ensemble du paragraphe. Si vous changez le comportement du double clic, la sélection des mots pourrait être un peu difficile.

Questions connexes