有 2 个组合框 shown.I return it.But 中有 12 个值 我想从第二个组合框中删除我在第一个组合框中选择的值

There are 2 comboboxes as shown.I return 12 values in it.But i want to delete the value i selected in the first combobox from the second

我想删除我在第二个中选择的值,first.I将使用 12 个组合框执行此操作。我怎样才能做到最干净。

enter image description here

        int[] Can = new int[12];    /*Array*/
        for (int i = 0; i < 12; i++)  
        {
            
            Can[i] = i + 1;

          
        }

       
        z++;
        if (z <=1)
        {

            foreach (var value in Can) //Can DATA 
            {
                   
                    CanID1.Items.Add(value);  /*12 piece Can
                    CanID2.Items.Add(value);
                    CanID3.Items.Add(value);
                    CanID4.Items.Add(value);
                    CanID5.Items.Add(value);
                    CanID6.Items.Add(value);
                    CanID7.Items.Add(value);
                    CanID8.Items.Add(value);
                    CanID9.Items.Add(value);
                    CanID10.Items.Add(value);
                    CanID11.Items.Add(value);    
            }


        }
    

你应该让你的问题更清楚一点,但我想我明白了它的要点。

我觉得最好使用的对象是 List<int> for can 而不是 int[] 以便于操作。我不确定您是否希望能够再次使用这些值,但我们可以在后续的 ComboBox 中删除它们。

 List<int> can = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

DropDown() 发生时,我让每个 ComboBox 重建它的 Items

private void comboBox1_DropDown(object sender, EventArgs e)
    {
        comboBox1.Items.Clear();
        foreach (int item in can)
        {
            comboBox1.Items.Add(item);
        }
    }

SelectedIndexChanged() 之后,我们只删除选定的值。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        
        can.Remove((int)comboBox1.SelectedItem);
    }