2009-03-16 13 views
1

Ich spiele mit einem Silverlight-Steuerelement, das eine TextBox und Schaltfläche hat. Wenn ich auf die Schaltfläche klicke (die unten SelectText aufruft), möchte ich den gesamten Text in der Textbox auswählen.Silverlight programmgesteuert Text auswählen

Hier ist mein 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; 
    } 

Die kommentierten Code ist das, was ich bereits versucht, aber keiner funktioniert.

Jeder hat Vorschläge, was ich falsch mache?

+0

btw .. Ich bin mir bewusst, dass die // tb.Text = String.Empty den Text – coson

Antwort

4

Sie können den Fokus auf das Textfeld geben müssen die tatsächliche Auswahl geschieht, um zu sehen (entweder vor oder nach der Wahl, es keine Rolle, vielleicht aber Sie werden versuchen müssen):

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

Das ist genau das, was ich brauchte !! Vielen Dank – coson

1

SelectAll() funktioniert - ich habe es mehr als einmal verwendet. Ist etwas manipuliert das Textfeld, nachdem diese Methode passiert?

+0

Nein löscht, aber ich habe meine Kontrollen in einem Gitter, ich frage mich, wenn es ankommt. – coson

0

Der Fokus Lösung gearbeitet für mich, aber manchmal bekomme ich diese ExecutionEngineException während der SelectAll() und es ist total falsch! Selbst ein Versuch ... Fang wird es nicht stoppen und es gibt keine weiteren Details über den Fehler.

1

Dies funktioniert für die gesamte Benutzersteuerung.

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); 
    } 
} 
Verwandte Themen