2012-04-17 1 views
0

콤보 상자 안의 항목을 선택하면 각 확인란의 선택 여부를 변경하는 GUI를 만들려고합니다.콤보 상자에서 다른 항목을 선택할 때 체크 박스를 동적으로 변경하는 방법

GUI에는 사용자가 선택하거나 선택을 해제 할 수있는 많은 체크 박스가 있습니다.

예를 들어, 사용자는 콤보 상자에서 "항목 1"을 선택할 수 있습니다. 그러면 사용자는 점검 할 모든 확인란을 선택합니다. 그런 다음 사용자가 "항목 2"를 선택하면 "항목 1"에서 확인 된 확인란이 회색으로 표시되고 나머지는 선택 또는 선택 취소 할 수 있습니다.

콤보 상자의 각 항목은 기본적으로 사용자의 선택 사항을 확인란에 저장합니다.

누구든지이 방법을 보여줄 수 있습니까? 예를 들어 4 개 체크 박스를 들어

답변

1

, 1 콤보

public Form1() 
    { 
     InitializeComponent(); 
     for (int i = 0; i < 3; i++) 
      comboBox1.Items.Add(i.ToString()); 
     comboBox1.Text = comboBox1.Items[0].ToString(); 
    } 
    bool needtoupdate = true; 
    public class CheckedItems 
    { 
     public CheckedItems() 
     { 
      for (int i = 0; i < b.Length; i++) 
      { 
       b[i] = false; 
      } 
     } 
     public bool[] b = { false, false, false, false }; 
    } 

    CheckedItems[] allcheckeditems = { new CheckedItems(), new CheckedItems(), new CheckedItems()}; 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     needtoupdate = false; 
     checkBox1.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[0]; 
     checkBox2.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[1]; 
     checkBox3.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[2]; 
     checkBox4.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[3]; 
     needtoupdate = true; 
    } 

    void saveallchecked() 
    { 
     if (!needtoupdate) return; 
     allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[0] = checkBox1.Checked; 
     allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[1] = checkBox2.Checked; 
     allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[2] = checkBox3.Checked; 
     allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[3] = checkBox4.Checked; 
    } 

    private void comboBox1_SelectedValueChanged(object sender, EventArgs e) 
    { 
    } 

    private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     saveallchecked(); 
    } 

    private void checkBox2_CheckedChanged(object sender, EventArgs e) 
    { 
     saveallchecked(); 
    } 

    private void checkBox3_CheckedChanged(object sender, EventArgs e) 
    { 
     saveallchecked(); 
    } 

    private void checkBox4_CheckedChanged(object sender, EventArgs e) 
    { 
     saveallchecked(); 
    } 
+0

감사합니다. 큰 도움이되었습니다. – js0823

0

내가하는 업데이트 패널 내부에 체크 박스와 콤보를 넣어 당신이 루프가 사용자가이 경우에, 콤보 상자가 변경 될 때의 이벤트를 만들 것 어느 것이 체크되어 있는지 그리고 당신이 설정 한 것들은 false를 가능하게합니다 (그들은 회색으로 보일 것입니다).

유용 했습니까?

관련 문제