LoginSignup
LiteRa
@LiteRa (DAIKI SATO)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

[C#] WindowsForm / Comboobox(複数) 選択された値は非表示にしたい 

[C#] WindowsForm / Comboobox(複数) 選択された値は非表示にしたい 

WindowsForm(C#)で複数のコンボボックスに共通のItemを設定して、
あるコンボボックスがItemのうちの一つを選択したら、
その他のコンボボックスは選べないように非表示にしたいです。

items = 1~10までの半角英数字を設定
グループボックス = 10個

よろしくお願いします

0

3Answer

質問者の意図通りかどうかわかりませんが、
複数のコンボボックス(comboBox1~3)のうち、
何れかで値が選択されると、他のコンボボックスが非表示になるサンプルです。

サンプル
private void Form1_Load(object sender, EventArgs e)
{
    // items
    var items = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    // コンボボックスにitemsをセット
    comboBox1.DataSource = items.ToArray();
    comboBox2.DataSource = items.ToArray();
    comboBox3.DataSource = items.ToArray();

    // SelectedIndexChangedで同じメソッドを呼ぶよう設定
    comboBox1.SelectedIndexChanged += new EventHandler(this.comboBox_SelectedIndexChanged);
    comboBox2.SelectedIndexChanged += new EventHandler(this.comboBox_SelectedIndexChanged);
    comboBox3.SelectedIndexChanged += new EventHandler(this.comboBox_SelectedIndexChanged);
}

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    foreach (Control control in this.Controls)
    {
        if (control is ComboBox)
        {
            if (!control.Equals(sender))
            {
                control.Visible = false;
            }
        }
    }
}

0

文章に意味不明なところがあるので無理矢理解読すると、

  • いくつかのコンボボックスがあり、それぞれ1~10の数字がitemとしてセットされている
  • あるコンボボックスで数字を選択すると、他のコンボボックスでは選ばれた数字を選択肢(item)から外したい

といった意味でしょうか?

@Yamazin さんのは「選択されたコンボボックス以外のコンボボックスを画面から消し去る」というコードです。
書かれている文を素直に解釈すればそうなります。

あと、

グループボックス = 10個

が意味不明です。そこまでの説明にはないグループボックスのことに突然触れても、前の文とどう関係するのかわかりません。
WindowsFormsにはGroupBoxというコントロールが存在しますが、それを指しているのか別のものを自己流でグループボックスと呼んでいるだけなのかどちらでしょう?

0

Your answer might help someone💌