2016-04-30 5 views
0

これは次のようになります。最大値が4のnumericUpDownがあります。値が1の場合はボタンが1つのみ表示され、値が2の場合は2つのボタンが表示されます。コードでこれを行うには?私はタイマーを使用していますし、すべてのチックでnumericUpDownの値が変更されているかどうかをチェックし、ボタンを変更した場合、値が減少するとボタンを削除するとどうすればよいですか?たとえば、値が4の場合、1つでボタンを減らすと4つのボタンが表示されますが、ボタンは1つだけ消えてしまいます。これどうやってするの ?カウンタが増減するとすぐにボタンを表示したり隠したりできますか?

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

numericUpDownが1つ減少し、1つのボタンが消えたとすると、numericUpDownが4から3に減少し、button4が消えたり、button1が消えてしまったりするのですか? –

+0

タイマの代わりに、[NumericUpDown.ValueChangedイベント](https://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown.valuechanged(v = vs.110).aspx)を使用してください。 。 –

答えて

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 
    } 
} 
+0

質問に基づいて、タイマーを使用して数字の上/下の値をチェックする理由はありません。私はそれが完全性のために含まれていることを認識しますが、私は若い開発者がこの答えを見て、タイマーを使うことが適切な道筋だと思うのは嫌です。 –

+0

@ MetroSmurf - 私はもっと同意できませんでした。私は、もしあなたがする必要があるならば、そして、しかし、しかし、私は、表現を使うことを試みました。 – Enigmativity

1

numericUpDownをデザインでダブルクリックするだけで、タイマーは必要ありません。

あなたはあなたのコードは次のようになりますことをprivate void numericUpDown1_ValueChanged

Aftherを取得します:

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