首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NumericupDown比较Visual c#

NumericupDown比较Visual c#
EN

Stack Overflow用户
提问于 2022-02-28 09:29:43
回答 2查看 80关注 0票数 0

我必须做一个分位数配置,我必须设置一个条件,使第二个值高于第一个,第三个值高于第二个,以此类推。我使用的是数列,值是由用户设置的。我试图实现这段代码,但它总是显示一个消息框错误,即使值是正确的。到目前为止,这是我的代码(使用和C#):

代码语言:javascript
复制
decimal min = 1;

//when the first numeric is changed:
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    numericUpDown1.Minimum = min;
    min = numericUpDown1.Value;
}

private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
    min++;
    numericUpDown2.Minimum = min;
    min = numericUpDown2.Value;
}

private void numericUpDown3_ValueChanged(object sender, EventArgs e)
{
    
    min++;
    numericUpDown3.Minimum = min;
    min = numericUpDown3.Value;
}


private void numericUpDown4_ValueChanged(object sender, EventArgs e)

{
    min++;
    numericUpDown4.Minimum = min;
    numericUpDown4.Maximum = 99;
}
private void button_OK_Click(object sender, EventArgs e)
{
    if (
     numericUpDown1.Value > numericUpDown2.Value ||
      numericUpDown2.Value > numericUpDown3.Value ||
     numericUpDown3.Value > numericUpDown4.Value  )
    {
        MessageBox.Show(
          "Quantiles are not filled correctly",
          "The quantiles aren't filled in correctly", MessageBoxButtons.OK, MessageBoxIcon.Error);
        textBoxName.Select();
        DialogResult = DialogResult.None;
        return;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-28 12:08:59

您需要将所有的NumericUpDown值保存在一个列表或数组中,在那里您可以像单个实体一样操纵它们,就像一个循环一样。

当然,更改其中一个数字元素的最小值应该链接到检查该控件内的当前值,因为您的当前值不能小于新的最小值。

因此,首先要做的是在窗体类中创建一个全局变量,其中保存对要同步的所有数字控件的引用。

代码语言:javascript
复制
public class Form1
{
    private List<NumericUpDown> numbers = new List<NumericUpDown>();    
    public Form1 : Form
    {
        InitializeComponent();
        numbers.AddRange(new [] {n1, n2,n3,n4,n5});
    }
    ......
}

现在,您可以编写这样一个方法,它可以调整列表中包含的所有数字的最小值。

代码语言:javascript
复制
private void UpdateMinimum()
{
    for (int x = 0; x < numbers.Count-1; x++)
    {
        if(numbers[x].Value > numbers[x+1].Value)
            numbers[x+1].Value = numbers[x].Value;
        numbers[x+1].Minimum = numbers[x].Value;
        
    }
}

最后,让所有的NumericUpDown事件ValueChanged调用相同的方法

代码语言:javascript
复制
void numerics_ValueChanged(object sender, EventArgs e)
{
    UpdateMinimum();
}
票数 0
EN

Stack Overflow用户

发布于 2022-03-01 09:21:47

如果您想设置一个条件,使第二个值高于第一个值,第三个值高于第二个值,等等,您可以参考以下代码:

代码语言:javascript
复制
    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
        numericUpDown1.Minimum = 1;
    }

    private void numericUpDown2_ValueChanged(object sender, EventArgs e)
    {
        numericUpDown2.Minimum = numericUpDown1.Value + 1;
    }

    private void numericUpDown3_ValueChanged(object sender, EventArgs e)
    {
        numericUpDown3.Minimum = numericUpDown2.Value + 1;

    }

    private void numericUpDown4_ValueChanged(object sender, EventArgs e)
    {
        numericUpDown4.Minimum = numericUpDown3.Value + 1;
        numericUpDown4.Maximum = 99;
    }

    private void button_OK_Click(object sender, EventArgs e)
    {
        if (
            numericUpDown1.Value > numericUpDown2.Value ||
            numericUpDown2.Value > numericUpDown3.Value ||
            numericUpDown3.Value > numericUpDown4.Value)
        {
            MessageBox.Show(
              "Quantiles are not filled correctly",
              "The quantiles aren't filled in correctly", MessageBoxButtons.OK, MessageBoxIcon.Error);
            textBoxName.Select();
            DialogResult = DialogResult.None;
            return;
        }
    }

这是测试结果:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71292887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档