c# - 如何在不丢失其值(value)的情况下关注文本框

标签 c# wpf

我正在尝试操作一个 TextBox,以便您可以单击它或在其上使用 Tab 键,并且您可以专注于更改值,而无需退格键来删除现有值。以下代码有效,但如果用户不想更改该值而恰好在控件之间切换,则该值将丢失。有没有一种简单的方法可以做到这一点而不必跟踪当前和以前的变量值?

下面是给予用户焦点但抹去了现有值(value)的代码:

private void txt_foo_GotFocus(object sender, RoutedEventArgs e)
{
    TextBox tb = (TextBox)sender;
    tb.Text = string.Empty;
    tb.GotFocus -= txt_panelWidth_GotFocus;
}

最佳答案

我的解决方案:选择文本

void SelectingTextBox_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    var tb = sender as TextBox;
    if (tb != null && e.KeyboardDevice.IsKeyDown(Key.Tab))
    {
        tb.SelectAll();
    }
}

注意这个 e.KeyboardDevice.IsKeyDown(Key.Tab) 条件是我在我的项目中使用的条件,以便在按选项卡导航时仅选择所有文本。如果您总是想选择所有文本,则可以删除该条件。但是,当所有文本都被选中时,对于使用鼠标操作的用户来说可能会很烦人。

关于c# - 如何在不丢失其值(value)的情况下关注文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950320/

相关文章:

c# - 是否有使用 AutoMapper 的 ValueResolver 映射 EF 实体的 EntityKey 值的通用方法?

c# - '´' 完全出乎我的意料

c# - 当我的任何 UI 元素在 WPF/C# 中发生更改时,是否会触发任何事件?

c# - 如何创建包含 $redact 的 c# mongodb 管道

c# - 在android中实现滑动和点击相对布局的最佳方法是什么?

c# - Canvas child 识别

c# - 如何强制 WPF 启动窗口到特定屏幕?

c# - WPF 窗口在关闭后不释放内存

c# - Thread.Sleep(1) 有什么特别之处吗?

WPF DataGrid 列宽和重新排序