NumericUpDown的TextChanged事件

11

我正在使用 Microsoft Visual C# 2010 Express。当我使用箭头改变 numericUpDown 的值时,我的按钮将启用。但我还想在直接更改 numericUpDown 的文本值时启用我的按钮。

我正在使用以下代码:

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    button1.Enabled = true;
}

那问题是什么? - Abbas
1
在更改数字后,尝试将光标从numericUpDown控件中移出。 - Donatas K.
或者按回车键。您也可以订阅keypress事件,但请记住,文本尚未验证,因此如果您在那里调用值,则会获得旧值。但是,如果您在button.Click事件中调用numericUpdown值,它已经改变了。 - Martheen
问题在于当我直接更改值时,按钮没有被启用。 - Lany
1个回答

24

您可能需要使用TextChanged事件而不是使用ValueChanged。在更改值后,需要按Enter键才能触发ValueChanged事件。

关于NumericUpDown.ValueChanged事件,MSDN的说明为:

要发生ValueChanged事件,可以通过代码、单击向上或向下按钮或用户输入控件读取的新值来更改Value属性。当用户按ENTER键或导航离开控件时,会读取新值。如果用户输入了新值,然后单击向上或向下按钮,则ValueChanged事件将发生两次,MSDN

绑定TextChanged事件。

private void TestForm_Load(object sender, EventArgs e)
{
    numericUpDown1.TextChanged += new EventHandler(numericUpDown1_TextChanged);
}

TextChanged事件的声明。

void numericUpDown1_TextChanged(object sender, EventArgs e)
{
    button1.Enabled = true;
}

当我改变值时,按钮可以自动启用,而无需按回车键吗? - Lany
是的,我已经尝试过了...在这里不适用。 但是可以通过按回车键来完成。 顺便说一句,谢谢 :) - Lany

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接