2017-12-19 15 views
0

유동 레이아웃 패널에 버튼이 많습니다. 프로그래밍 방식으로이 버튼을 만들었습니다. 하지만 두 번째 클릭 후 색상이 밝은 녹색으로 바뀌면 색상을 재설정 할 수 없습니다. 흐름 레이아웃 패널에이 핸들러를 작성했습니다. 두 번째 클릭으로 버튼 색상을 지우려면 어떻게해야합니까?흐름 레이아웃 패널에서 버튼 색상을 두 번째로 클릭하는 방법 C#

private void Form1_Load(object sender, EventArgs e) 
     { 
      StringBuilder sb = new StringBuilder(); 

      sb.Append("3 x coca cola 33 cl"); 
      sb.Append(Environment.NewLine); 
      sb.Append("DIN"); 
      sb.Append("\t\t"); 
      sb.Append("200");  
      //button2.Text = sb.ToString(); 

      string products = "30000|3;3110002;Cola;400;150;100;1;1000|3;3110003;Snickers;400;150;100;1;1000|3;3110004;NesttleCrunch;400;150;100;1;1000|3;3110005;Marlbora;400;150;100;1;1000|3;3110006;Orange;400;150;100;1;1000|3;3110007;Milk;400;150;100;1;1000|3;3110008;Water;400;150;100;1;1000|3;3110009;Banana;400;150;100;1;1000|3;3110010;Honey;400;150;100;1;1000|3;3110011;Beer;400;150;100;1;1000|3;3110012;Hazelnut;400;150;100;1;1000|3;3110013;RedBull;400;150;100;1;1000|3;3110014;ChewingGum;400;150;100;1;1000|3;3110015;Apple;400;150;100;1;1000"; 


      string[] listproducts = products.Split('|'); 

      lblAvaliablePoint.Text = listproducts[0]; 

      for (int i = 1; i < listproducts.Count();i++) 
      { 

       string[] perproduct = listproducts[i].Split(';'); 

        Button newButton = new Button(); 
        newButton.Size = new System.Drawing.Size(170, 87); 
        newButton.BackColor = Color.LightGray; 
        newButton.UseVisualStyleBackColor = false; 
        newButton.Tag =perproduct[1]; 
        newButton.Text = perproduct[0] + "x" + perproduct[2]; 
        newButton.Click += new EventHandler(ButtonClickHandler); 

        flowLayoutPanel1.Controls.Add(newButton); 

      } 
       flowLayoutPanel1.VerticalScroll.Maximum = flowLayoutPanel1.Height+40; 
      flowLayoutPanel1.VerticalScroll.LargeChange = 30; 

     } 

    public void ButtonClickHandler(Object sender,EventArgs e) 
     { 

       ((Button)sender).BackColor = Color.LightGreen; 

     } 
+1

내가 당신의 문제를 이해 모르겠지만, 난 당신이) 경우 (((버튼) 보낸 사람'같은 뭔가를 .BackColor == 색상을 찾고있는 것 같아요 .LightGreen) {((Button) sender) .BackColor == Color.White} else {((Button) sender) .BackColor == Color.LightGreen}; ' – Pikoh

+0

감사합니다 Pikoh가 맞습니다. 지금은 작동 중입니다 –

답변

1

이런 경우 버튼 처리기에 조건을 추가하면 어떨까요?

public void ButtonClickHandler(object sender, EventArgs e) 
    { 
     if (((Button)sender).BackColor == Color.LightGreen) 
     { 
      ((Button)sender).BackColor = Color.White; // Your default color 
     } 
     else 
     { 
      ((Button)sender).BackColor = Color.LightGreen; 
     } 
    } 
+0

고마워요. 지금 잘 작동 :) –

1
는 변경

당신의 ButtonClickHandler

public void ButtonClickHandler(Object sender, EventArgs e) 
     { 
      var currentButton = ((Button)sender); 
      if(currentButton != null) 
      { 
       currentButton.BackColor = currentButton.BackColor == Color.LightGreen ? Color.LightGray : Color.LightGreen; 
      } 
     }