0

私はWPFアプリケーションに取り組んでいます。このアプリケーションでは、金額を表示するテキストボックスがいくつかあります。テキストボックスにフォーカスが来るたびに、テキストボックス内のすべてのコンテンツを選択したいだけです。

同じことを実現するために、「GotFocus」イベントのテキストボックスのSelectAll()メソッドを使用していますが、希望どおりに機能しません。

どうすれば機能することができるか教えてください。ありがとう

4

3 に答える 3

0

FocusableChangedイベントの処理を試しましたか http://msdn.microsoft.com/en-us/library/system.windows.uielement.focusablechanged.aspx

FocusableChangedイベントハンドラー内でIsFocusedを確認できます。IsFocusedがtrueの場合、SelectAllを呼び出すことができます。以下は擬似コードです。

textBox.FocusableChanged += (s,e) =>
{
   if(textBox.IsFocused)
     testBox.SelectAll();
}

EDIT1
上記が機能していないため、FocusManger.GetFocusedElementを試すことができます。
焦点を絞った要素を決定する

public DebugFocusedElementProxy()
{
    var timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromMilliseconds(100);
    timer.Tick += (o, ea) =>
    {
        var fe = FocusManager.GetFocusedElement();
        if (fe != null)
        {
            var element = fe as FrameworkElement;
            if (!string.IsNullOrEmpty(element.Name) &&
                 String.Equals(element.Name, textBox))
            {
                textBox.SelectAll();
            }
        }
    };
    timer.Start();
}

//textBox.SelectAllをディスパッチャスレッドで呼び出す必要がある場合があることに注意してください

于 2012-05-11T05:19:56.247 に答える
0

このための添付の動作を作成し、目的のテキストボックスに使用できます。このアプローチはここで詳細に説明されています-

http://eladm.wordpress.com/2009/04/02/attached-behavior/

このような動作のコードは、ここここでも入手できます。

アプリケーション内のすべてのテキストボックスにデフォルトでこれを持たせたい場合は、ここを見てください-

フォーカスでWPFテキストボックス内のすべてのテキストを選択する方法

于 2012-05-11T07:29:19.827 に答える
0

起動時に、テキストボックスのグローバルイベントハンドラーを登録します。

 EventManager.RegisterClassHandler(typeof(System.Windows.Controls.Primitives.TextBoxBase), UIElement.GotFocusEvent, new RoutedEventHandler(TextBoxBaseGotFocus));

TextBoxBaseGotFocusメソッドは次のようになります。

    private static void TextBoxBaseGotFocus(object sender, RoutedEventArgs e)
{
     // Get the TextBoxBase
     var elem = sender as System.Windows.Controls.Primitives.TextBoxBase;
     if (elem != null)
     {
         elem.SelectAll();
     }
}
于 2012-05-11T09:55:34.640 に答える