2009-03-16 6 views
1

私は、テキストボックスとボタンを持つSilverlightコントロールで再生しています。下のSelectTextを呼び出すボタンをクリックすると、テキストボックス内のすべてのテキストを選択します。Silverlightプログラムによってテキストを選択します

はここに私のコードです:

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; 
    } 

コメントしたコードは、私はすでに試したものですが、どちらも取り組んでいます。

誰かが私が間違っていることについての提案がありますか?

+0

はところで..私は// tb.Text = String.Emptyをテキスト – coson

答えて

4

あなたは(前または選択した後、それは問題ではないかもしれませんが、あなたがしようとする必要がありますいずれか)実際の選択が起こって見るためにテキストボックスにフォーカスを与える必要があります

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

それはまさに私が必要としていたものです!ありがとう – coson

1

SelectAll()の動作 - 複数回使用しました。このメソッドの後に何かテキストボックスを操作していますか?

+0

ノーをクリアすることを承知していますが、私はそれが重要な場合、私は思ったんだけど、グリッド内の私のコントロールを持っています。 – coson

0

フォーカスソリューションが働いていました私にとっては、SelectAll()の実行中にこのExecutionEngineExceptionを取得することがありますが、それはまったく偽です!試しても捕まえてもそれを止めることはなく、エラーの詳細はもうありません。

1

これは、ユーザーコントロール全体のトリックです。

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); 
    } 
} 
関連する問題