-2

こんにちは、C# を使用せずに 2 つのコンボボックスを同期するための効率的な方法を考え出すのに苦労しています。2 つのコンボボックスには、どちらかのコンボボックスから現在選択されている値を差し引いた同じ値が含まれます。

すなわち

データソース = "A" "B" "C" "D"

コンボボックス 1 現在選択されているアイテム = "A" コンボボックス 2 現在選択されているアイテム = "B"

利用可能な値が必要

コンボボックス 1 = "A" "C" "D" コンボボックス 2 = "B" "C" "D"

これを達成する最良の方法は何ですか?Windowsフォームのプログラミングに関しては、私は少し初心者です

これは私が試したものです

ええ、喜びはありません...これが私が試したことです

    static List<string> ds = new List<string> { "a", "b", "c", "d" };

    BindingList<string> b1 = new BindingList<string>(ds);
    BindingList<string> b2 = new BindingList<string>(ds);

    public Form1()
    {
        InitializeComponent();

        comboBox1.DataSource = b1;
        comboBox2.DataSource = b2;
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (b2.Remove((string) comboBox1.SelectedItem))
        {
            b2.Remove((string) comboBox1.SelectedItem);
        }
        if (!b1.Contains((string) comboBox2.SelectedItem))
        {
            b1.Add((string) comboBox2.SelectedItem);
        }
    }

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (b1.Remove((string)comboBox2.SelectedItem))
        {
            b1.Remove((string)comboBox2.SelectedItem);
        }
        if (!b2.Contains((string)comboBox1.SelectedItem))
        {
            b2.Add((string)comboBox1.SelectedItem);
        }
    }
4

1 に答える 1

0

私はあなたのものを試してみます..

  public Form1()
    {
        InitializeComponent();

        comboBox1.DataSource = b1;
        comboBox2.DataSource = b2;

        Boolean lDoing1;
        Boolean lDoing2;
    }

   private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lDoing1)
        {
         Return;
        }
        if (b2.Remove((string) comboBox1.SelectedItem))
        {
            lDoing2 = True ; 
            b2.Remove((string) comboBox1.SelectedItem);
            lDoing2 = False ;
        }
        if (!b1.Contains((string) comboBox2.SelectedItem))
        {
            b1.Add((string) comboBox2.SelectedItem);
        }
    }

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lDoing2)
        {
         Return;
        }
        if (b1.Remove((string)comboBox2.SelectedItem))
        {
            lDoing1 = True ;
            b1.Remove((string)comboBox2.SelectedItem);
            lDoing1 = False ;
        }
        if (!b2.Contains((string)comboBox1.SelectedItem))
        {
            b2.Add((string)comboBox1.SelectedItem);
        }
    }
于 2013-06-08T09:31:53.730 に答える