我正在尝试操作TextBox
,以便您可以单击它或选项卡,并且您可以专注于更改值而无需退格以删除现有值。以下代码可以正常工作,但如果用户不想更改该值并恰好通过控件进行制表,则该值将丢失。有没有一种简单的方法可以做到这一点,而无需跟踪当前和以前的变量值?
以下代码为用户提供了焦点,但消除了现有值:
private void txt_foo_GotFocus(object sender, RoutedEventArgs e)
{
TextBox tb = (TextBox)sender;
tb.Text = string.Empty;
tb.GotFocus -= txt_panelWidth_GotFocus;
}
答案 0 :(得分:5)
我的解决方案:选择文字
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)
条件是我在项目中使用的条件,以便仅在按Tab键导航时选择所有文本。如果您始终要选择所有文本,则可以删除该条件。但是,当选择所有文本时,使用鼠标的用户可能会非常烦人。
答案 1 :(得分:3)
当您勾选到TextBox
并点击其中时,应选择private void txt_foo_GotFocus(object sender, RoutedEventArgs e)
{
TextBox tb = (TextBox)sender;
tb.Dispatcher.BeginInvoke(new Action(() => tb.SelectAll()));
}
中的文字:
{{1}}