2009-03-16 8 views
1

Je joue avec un contrôle Silverlight qui a un TextBox et un bouton. Lorsque je clique sur le bouton (qui appelle SelectText ci-dessous), je veux sélectionner tout le texte dans la zone de texte.Silverlight Programmer le texte par programmation

Voici mon code:

private void SelectText() 
    { 
     TextBox tb = this.txtFirstName; 
     tb.SelectionStart = 0; 
     tb.SelectionLength = 3; 
     // tb.Select(0, this.txtFirstName.Text.Trim().Length - 1); 
     // tb.SelectAll(); 
     // tb.Text = String.Empty; 
    } 

Le code commenté est ce que j'ai essayé déjà, mais ne fonctionne.

Quelqu'un at-il des suggestions sur ce que je fais mal?

+0

btw .. Je sais que le // tb.Text = String.Empty efface le texte – coson

Répondre

4

Vous devrez peut-être donner le focus à la zone de texte pour voir la sélection proprement dite se passe (avant ou après la sélection, il ne pourrait pas la matière, mais vous devrez essayer):

private void SelectText() 
    { 
     TextBox tb = this.txtFirstName; 
     tb.SelectionStart = 0; 
     tb.SelectionLength = 3; 
     // tb.Select(0, this.txtFirstName.Text.Trim().Length - 1); 
     // tb.SelectAll(); 
     // tb.Text = String.Empty; 
     tb.Focus(); 
    } 
+0

C'est exactement ce dont j'avais besoin !! Merci – coson

1

SelectAll() fonctionne - Je l'ai utilisé plus d'une fois. Est-ce que quelque chose manipule la zone de texte après que cette méthode se soit produite?

+0

Non, mais je dois mes commandes dans une grille, je me demande si cela importe. – coson

0

La solution de mise au point a travaillé pour moi, mais parfois je reçois cette ExecutionEngineException pendant le SelectAll() et c'est totalement faux! Même un essai ... catch ne l'arrêtera pas et il n'y a plus de détails sur l'erreur.

1

Cela fait l'affaire pour l'ensemble du contrôle utilisateur.

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 
    protected override void OnGotFocus(RoutedEventArgs e) 
    { 
     TextBox tb = e.OriginalSource as TextBox; 
     if (tb != null) 
      tb.SelectAll(); 
     base.OnGotFocus(e); 
    } 
} 
Questions connexes