0

我有一个带有几个 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,

生命使者

4

1 回答 1

0

我刚刚解决了!!!!

我刚刚发现 TextChanged 方法调用它的方法之一是在为其创建变量之前尝试更新其中一个框。只是在代码上更改了它,突然间所有无法正常工作的 NUD 框都工作正常!!!!!!!!!

感谢那些尝试过的人。

编辑:

IT 并没有真正解决,我只是添加了一个 this.focus(); 到所有 TextChanged 调用的方法,以便它检查最小/最大值并在调用其他方法之前设置正确的值......虽然它可以在我需要它工作时工作,所以我对此感到满意

BR,

生命使者

于 2011-01-25T13:47:59.933 回答