0

各チェックボックスがオンになっているかどうかに関係なく、コンボボックス内の項目を選択すると変化するGUIを作成しようとしています。

GUIには、ユーザーがオンまたはオフにできるチェックボックスがたくさんあります。

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

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

誰かがこれを行う方法を教えてもらえますか?

4

2 に答える 2

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();
    }
于 2012-04-17T14:49:16.830 に答える
0

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

役に立ちましたか?

于 2012-04-17T19:07:48.180 に答える