wpf - TextBox (PasswordBox) SelectAll 方法不起作用

标签 wpf textbox selectall passwordbox

我这里有一些概念问题。我知道如何选择 TextBoxPasswordBox 中的所有文本。通过 GotKeyboardFocusPreviewMouseLeftButtonDown 事件,您知道。这很好用。

XAML:

PreviewMouseLeftButtonDown="PasswordOnPreviewMouseDown"
GotKeyboardFocus="SelectAllPassword"

代码隐藏

private void SelectAllPassword(Object sender, RoutedEventArgs e)
{
    var pb = (sender as PasswordBox);
    if (pb != null)
        pb.SelectAll();
}

private void PasswordOnPreviewMouseDown(Object sender, MouseButtonEventArgs e)
{
    var pb = (sender as PasswordBox);
    if (pb != null)
        if (!pb.IsKeyboardFocusWithin)
        {
            e.Handled = true;
            pb.Focus();
        }
}

但问题是 - 为什么不起作用?

XAML:

PreviewMouseLeftButtonDown="PasswordOnPreviewMouseDown"

代码隐藏:

private void PasswordOnPreviewMouseDown(Object sender, MouseButtonEventArgs e)
{
    _txtPassword.SelectAll();
    e.Handled = true;
}

其中 _txtPassword - TextBoxPasswordBox 控件。那么,为什么我必须使用 Focus 文本控件?

最佳答案

实际上,选择是有效的。

您可能会觉得文本没有被选中,因为它没有在视觉上突出显示,但那是因为 TextBox 没有获得焦点。

尝试使用 Tab 键将焦点放在 TextBox 上,您会看到整个文本突出显示。

关于wpf - TextBox (PasswordBox) SelectAll 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23611117/

相关文章:

wpf 从另一个文件夹/命名空间加载资源

wpf - 应使用哪个事件从 WPF 中的 TextBox(LostFocus、LostKeyboardFocus 等)更新模型?如何在WPF中设置事件的优先级?

ios - 在 UITextField 上执行选择器 "selectAll"时出现奇怪的问题

java - 在很多 jTextField 中选择所有焦点

c# - 如何检查文本框内容中是否有空格?

javascript - 如何使用 jquery 或 javascript 在元素中模拟 Ctrl+A 的行为?

c# - WPF:自动截断 TextBlock 中的文本

c# - 内部带有控件的 WPF 装饰器

c# - 使用Reactive Extensions模拟UIElement的点击

javascript - 使用 JavaScript 重置下拉列表