文本框决不能为空。 c#

问题描述 投票:0回答:2

我不希望我的文本框为空。我希望它保留空之前的值并在删除时写入它。我正在使用 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;
            }
        }
    }
c# wpf null textbox
2个回答
0
投票

您可以处理

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
是否为空。


0
投票

我想这完全取决于您想要的行为,但我宁愿使用 LostFocus 事件来重置文本,以防不可接受。您可以在编辑之前使用 GotFocus 事件捕获文本。

© www.soinside.com 2019 - 2024. All rights reserved.