2017-03-24 9 views
0

こんにちは、私は10ボタンを作成してパネルを追加しています。その作品。ボタンをもう一度クリックするとbutton.backgroundの色を変更したいので、同じ色を変えたい。 THAクリック後にボタンのバックカラーを変更し、2回目のクリック後に戻します。

private void Form1_Load(object sender, EventArgs e) 
    { for (int i = 0; i < 10; i++) 
     { 
      Button button = new Button(); 
      button.Size = new Size(43, 43); 
      button.Tag = i; 
      button.Click += new EventHandler(ButtonClickOneEvent); 
      button.Location = new Point(60, 60 + (i * 50)); 
      } 
      this.panel1.Controls.Add(button); 
     } 
    } 

    void ButtonClickOneEvent(object sender, EventArgs e) 
    { 
     MouseEventArgs me = (MouseEventArgs)e 
     Button button = sender as Button; 
     if (button != null) 
     { 
      switch ((int)button.Tag) 
      { 
       case 0: 
        if (me.Clicks >= 2) 
        { 
         button.BackColor = Color.White; 
        } 
        else 
        { 
         button.BackColor = Color.Red; 
        } 
        break; 
       case 1: 
        button.BackColor = Color.Red; 
        break; 
       case 3: 
        button.BackColor = Color.Red; 
        break; 
      } 
     } 

    } 
+0

は、各クリックのための白と赤の背景を交互にしますか? – SAm

+0

私はそれがまさにそのようにしたいです – foradream

答えて

4

何が欲しいのは、すべてのマウスに背景色を変更する場合はあなたのような何かを行うことができますクリックしてください:

void ButtonClickOneEvent(object sender, EventArgs e) 
{ 
    Button btn = sender as Button; 
    if (btn != null) 
    { 
     btn.BackColor = (btn.BackColor == Color.White) ? Color.Red : Color.White; 
    } 
} 
+0

私はnullのためのチェックを取るでしょう。 Clickイベントが送信者にnullオブジェクトを渡して例外があるはずであると私は想像していました。 –

+0

@BlakeThingstad原則として、ボタンのクリックイベントだけでなく、いくつかの種類のイベントに対してそのメソッドを使用できるため、「null」をチェックしました。しかし、あなたのコードでボタンのクリックイベントのためだけだと絶対に確信しているなら、チェックは何もないと思います。 :) – dcg

+0

十分な公正さは、パフォーマンスや何かを妨げているようではなく、ちょっと洗濯機なしで探している –

関連する問題