C# 如何让numericupdown控件在我键入时将其值传递给另一个控件,而不必按Enter键或单击另一个控件

C# 如何让numericupdown控件在我键入时将其值传递给另一个控件,而不必按Enter键或单击另一个控件,c#,winforms,C#,Winforms,我在Winform上有几个numericupdown控件。我把表单上的所有NUD都编码成文本框中的所有NUD。我的问题不在于这一点,这是完美的。我的问题是,为了在texbox中汇总任何NUD的值,我必须按enter键或在任何其他NUD中单击。单击选项卡将不起作用。我希望texbox中的值在我在任何NUD中键入时更新,而不必按enter键或将焦点赋予另一个NUD。我该怎么做?顺便说一句,我已经将代码放在每个NUD的ValueChanged事件中总结所有NUD。这是我放在每个NUD ValueCha

我在Winform上有几个numericupdown控件。我把表单上的所有NUD都编码成文本框中的所有NUD。我的问题不在于这一点,这是完美的。我的问题是,为了在texbox中汇总任何NUD的值,我必须按enter键或在任何其他NUD中单击。单击选项卡将不起作用。我希望texbox中的值在我在任何NUD中键入时更新,而不必按enter键或将焦点赋予另一个NUD。我该怎么做?顺便说一句,我已经将代码放在每个NUD的ValueChanged事件中总结所有NUD。这是我放在每个NUD ValueChanged事件中的代码。多谢各位

private void NudNumberOne_ValueChanged(object sender, EventArgs e)
{
  if (!string.IsNullOrEmpty(NudNumberOne.Text) && !string.IsNullOrEmpty(NudNumberTwo.Text) && !string.IsNullOrEmpty(NudNumberThree.Text))
textBox1.Text = (double.Parse(NudNumberOne.Text) + double.Parse(NudNumberTwo.Text) + double.Parse(NudNumberThree.Text)).ToString(); 
}

只有文本值成功解析为数值并分配给NumericUpDown控件,才会触发
ValueChanged()
事件。您已经发现,只有按Enter键或更改控件,才会发生这种情况

NumericUpDown不会公开
TextChanged()
事件……但很容易将其转换回
控件
并以这种方式连接。只需在表单的
Load()
事件中执行此操作:

private void Form1_Load(object sender, EventArgs e)
{
    ((Control)NudNumberOne).TextChanged += Ctl_TextChanged;
    ((Control)NudNumberTwo).TextChanged += Ctl_TextChanged;
    ((Control)NudNumberThree).TextChanged += Ctl_TextChanged;
}

private void Ctl_TextChanged(object sender, EventArgs e)
{
    try
    {
        textBox1.Text = (double.Parse(NudNumberOne.Text) + double.Parse(NudNumberTwo.Text) + double.Parse(NudNumberThree.Text)).ToString();
    } catch (Exception ex) {
        textBox1.Text = "";
    }
}

这是我一小时内第二次看到你提出这个“把戏”。明亮的添加到我的工具箱中。“数值updown类不公开TextChanged事件”你确定吗@HaraldCopoolse,注意该事件的
[System.ComponentModel.Browsable(false)]
属性。这意味着它不会通过“属性”窗格在NumericUpDown的事件中列出,也不会在您尝试通过代码(至少通过Visual Studio)直接连接它时列出。在WinForms窗体上放置NumericUpDown控件并报告您的发现。是的,它在技术上是通过类公开的,您仍然可以通过代码直接连接它,而不会出错,但是很多人不会这么做,因为它没有出现在IntelliSense中。numericupdown控件没有TextChanged事件,它有ValueChanged事件,Idle\u Mind的答案解决了我的问题。谢谢Idle\u Mind你的答案非常有效。现在我必须弄清楚如何获得与NUD关联的标签,以便在用户更改numericupdown中的值时更改其值。因为现在只有当我按下enter键或tab键或将焦点从与标签关联的numericupdown移开时,标签内的值才会改变。