它是这样的,我有一个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();
}
}
答案 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
}
}