.net 选择GotFocus事件中文本框的所有内容
我正在开发WPF应用程序,其中有一些显示美元金额的文本框。只要焦点出现在文本框上,我只想选择文本框内的所有内容 为了达到同样的效果,我在“GotFocus”事件中使用了文本框的SelectAll方法,但它并没有达到预期效果.net 选择GotFocus事件中文本框的所有内容,.net,wpf,textbox,wpf-controls,focus,.net,Wpf,Textbox,Wpf Controls,Focus,我正在开发WPF应用程序,其中有一些显示美元金额的文本框。只要焦点出现在文本框上,我只想选择文本框内的所有内容 为了达到同样的效果,我在“GotFocus”事件中使用了文本框的SelectAll方法,但它并没有达到预期效果 请让我知道我如何才能得到功能。谢谢您是否尝试过处理FocusableChanged事件 您可以在FocusableChanged事件处理程序中检查IsFocused。如果IsFocused为true,则可以调用SelectAll 下面是伪代码 textBox.Focusab
请让我知道我如何才能得到功能。谢谢您是否尝试过处理FocusableChanged事件 您可以在FocusableChanged事件处理程序中检查IsFocused。如果IsFocused为true,则可以调用SelectAll 下面是伪代码
textBox.FocusableChanged += (s,e) =>
{
if(textBox.IsFocused)
testBox.SelectAll();
}
编辑1
由于上述操作不起作用,您可以尝试FocusManger.GetFocusedElement。
//注意,textBox.SelectAll可能需要在上调用。您可以为此创建附加行为,并将其用于所需的textBox。这里详细解释了这种方法- 此类行为的代码也可用& 如果您希望应用程序中的所有文本框在默认情况下都具有此功能,请查看此处-
启动时,为textbox注册全局事件处理程序 e、 g 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();
}
}
我尝试了上述方法,但在代码隐藏文件中附加的事件不会触发。如果这不起作用,丑陋的方法是使用FocusManager.GetFocusedElement和timer事件,因为focusmanageries中没有事件,这是使用FocusManager.GetFocusedElement的非常昂贵的方法,因为它需要线程。我可以使用文本框的样式绑定事件GotKeyBoardFocus和MouseCapture吗?谢谢Tilak,它对我有用。我使用样式中的EventSetter来附加GotKeyBoardFocus和MouseCapture事件的处理程序。谢谢
EventManager.RegisterClassHandler(typeof(System.Windows.Controls.Primitives.TextBoxBase), UIElement.GotFocusEvent, new RoutedEventHandler(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();
}
}