我有一个带有几个 NumericUpDown 控件的表单,我希望它们在每次用户键入它们时运行一个函数。我将 ValueChanged 事件全部修改为 TextChanged,但只有 4 个 NUD.TextChanged 事件正在工作,所有其他事件都像 ValueChanged 事件一样(即使我已经搜索了所有解决方案并且没有提到 ValueChanged完全)。我复制了一个正在工作的 NUD 控件并将其粘贴。重命名它,设置事件,它们只是无法正常工作。
他们确实在 TextChanged 上触发,但他们不验证该值。
例如:最大100,最小1,我输入200,它保持为200,直到我离开控件,然后将其设置回100;
在工作正常的那个上,一旦我输入 2 并且它会导致它变为 200,它会在触发 TextChanged 事件时直接变为 100。
我已经检查过它们都将“CausesValidation”属性设置为true。
我已经做了 4 个多小时了,现在有点令人沮丧……以至于我想用所有 70 多个控件从头开始重新创建表单……
编辑:
刚刚发现正在发生的事情是那些不能正常工作的,它们只是没有在运行时将文本的输入限制为最小值和最大值。
我可以通过将其添加到 TextChanged 事件方法来将其修复到每个控件:
private void NUD_ValueOfF_TextChanged(object sender, EventArgs e)
{
if (NUD_ValueOfF.Value > NUD_ValueOfF.Maximum)
NUD_ValueOfF.Value = NUD_ValueOfF.Maximum;
CalculateAll();
}
但是,正如您可能想象的那样,这是一团糟,并且对于超过 30 个 NUD 一个一个地执行此操作非常不方便。另外,我想了解为什么它对 NUD 的 4 个工作正常而对其余的工作不工作,我只是不明白。我对他们所有人都做了同样的事情。其他表格上的 NUD 都工作正常。只有这种形式的人不想正常工作。
编辑2:
事件处理程序和按钮设计(工作和不工作的完全一样:
//
// NUD_ValueOfF
//
this.NUD_ValueOfF.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.NUD_ValueOfF.Increment = new decimal(new int[] {
1000,
0,
0,
0});
this.NUD_ValueOfF.Location = new System.Drawing.Point(219, 56);
this.NUD_ValueOfF.Maximum = new decimal(new int[] {
1000000000,
0,
0,
0});
this.NUD_ValueOfF.Name = "NUD_ValueOfF";
this.NUD_ValueOfF.Size = new System.Drawing.Size(120, 27);
this.NUD_ValueOfF.TabIndex = 172;
this.NUD_ValueOfF.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.NUD_ValueOfF.Value = new decimal(new int[] {
140000,
0,
0,
0});
this.NUD_ValueOfF.TextChanged += new System.EventHandler(this.NUD_ValueOfF_TextChanged);
如果有人能帮我一把,我将不胜感激。
谢谢
BR,
生命使者