我不希望我的文本框为空。我希望它保留空之前的值并在删除时写入它。我正在使用 KeyDown 事件,但它不起作用。按下删除键时不触发。哪个事件适合正确触发此操作。
我的代码
private static void textBox_KeyDown(object sender,KeyEventArgs e)
{
var textBox = sender as TextBox;
var maskExpression = GetMaskExpression(textBox);
var oldValue = textBox.Text;
if (e.Key == Key.Delete)
{
if (textBox.Text == string.Empty || textBox.Text == "")
{
MessageBox.Show("Not null");
textBox.Text = oldValue;
}
}
}
您可以处理
TextChanged
并将之前的值存储在字段中:
private string oldValue = string.Empty;
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (string.IsNullOrEmpty(textBox.Text))
{
MessageBox.Show("Not null");
textBox.Text = oldValue;
}
else
{
oldValue = textBox.Text;
}
}
请注意,每次按键时都会重置
oldValue
。另请注意,string.Empty
等于 ""
,因此您不需要两个条件来检查 string
是否为空。
我想这完全取决于您想要的行为,但我宁愿使用 LostFocus 事件来重置文本,以防不可接受。您可以在编辑之前使用 GotFocus 事件捕获文本。