2012-04-17 2 views
0

コンボボックス内の項目を選択すると、各チェックボックスをオンにするかどうかを変更するGUIを作成しようとしています。コンボボックスで異なる項目を選択するときにチェックボックスを動的に変更する方法

GUIには多くのチェックボックスがあり、ユーザーはこのチェックボックスをオンまたはオフにできます。

たとえば、ユーザーはコンボボックスから「アイテム1」を選択できます。ユーザーはチェックするチェックボックスをチェックします。次に、ユーザが「項目2」を選択すると、「項目1」からチェックされたチェックボックスがグレー表示され、残りの項目をチェックまたはチェック解除することができる。

コンボボックスの各項目は、基本的にユーザーの選択をチェックボックスに保存します。

誰でも私にこれを行う方法を教えてもらえますか?例えば

答えて

1

4つのチェックボックス、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

私は、更新パネルの内側にあなたのチェックボックスとコンボを入れて、ユーザーがコンボボックスを変更したときのイベントを作成し、このイベントに、あなたはにループする必要がありますどちらがチェックされているかを確認し、これを設定すると、偽が有効になります(灰色で表示されます)。

有用でしたか?

関連する問題