我不希望我的文本框为空。我希望它在值为空之前保留它,并在删除时写入它。我正在使用KeyDown事件,但它不起作用。按下Delete键时不触发。哪个事件适合正确触发此事件。
我的代码
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
是否为空。