计数器增加或减少后立即显示和隐藏按钮?

时间:2016-04-30 13:36:10

标签: c# windows forms

它是这样的,我有一个numericUpDown,其最大值为4.我想这样做,如果值为1只出现一个按钮,如果值为2,则出现两个按钮,等等。我怎么能设法在代码中执行此操作?我正在使用一个计时器,并在每个刻度线上检查numericUpDown的值是否发生变化,如果更改它会添加按钮,但是我怎么能做相反的事情,如果值减少,删除按钮?例如,如果我的值为4并且我已经有4个按钮出现,如果我减去1,则只有一个按钮应该消失。我怎么能这样做?

private void timer1_Tick(object sender, EventArgs e)
    {
        if (numericUpDown1.Value == 1)
        {
            metroComboBox3.Show();
        }
        else if (numericUpDown1.Value == 2)
        {
            metroComboBox4.Show();
        }
    }

2 个答案:

答案 0 :(得分:1)

只需在设计中双击numericUpDown,就不需要计时器了。

您将获得private void numericUpDown1_ValueChanged

你的代码看起来应该是这样的:

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            if (numericUpDown1.Value == 1)
            {
                metroComboBox3.Show();
            }
            else if (numericUpDown1.Value == 2)
            {
                metroComboBox4.Show();
            }
        }

答案 1 :(得分:0)

如果你必须使用计时器,那么这是要走的路:

private void timer1_Tick(object sender, EventArgs e)
{
    var buttons = new [] { button1, button2, button3, button4, };
    for (var i = 0; i < buttons.Length; i++)
    {
        buttons[i].Visible = numericUpDown1.Value - 1 >= i
    }
} 

但我会使用numericUpDown1.ValueChanged事件并执行此操作:

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    var buttons = new [] { button1, button2, button3, button4, };
    for (var i = 0; i < buttons.Length; i++)
    {
        buttons[i].Visible = numericUpDown1.Value - 1 >= i
    }
}