Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的互斥组合框_C#_Wpf_Winforms_Combobox - Fatal编程技术网

C# WPF中的互斥组合框

C# WPF中的互斥组合框,c#,wpf,winforms,combobox,C#,Wpf,Winforms,Combobox,我有几个组合框,都共享同一组选项如何绑定组合框,以便在任何组合框上选择一个选项时,该选项对其余组合框不可用?这包括以前选择的组合框-如果我要为以前占用的组合框重新选择选项,可用的选项将是除其他组合框上已选择的选项之外的所有选项 这里有一个更详细的解释: 假设我有3个组合框:Combo1、Combo2、Combo3和4个可用项(“A”、“B”、“C”、“D”) 我在Combo1上选择“A”。Combo2和Combo3将有“B”、“C”和“D” 然后我在Combo2上选择“C”。Combo3将有“B

我有几个组合框,都共享同一组选项如何绑定组合框,以便在任何组合框上选择一个选项时,该选项对其余组合框不可用?这包括以前选择的组合框-如果我要为以前占用的组合框重新选择选项,可用的选项将是除其他组合框上已选择的选项之外的所有选项

这里有一个更详细的解释:

假设我有3个组合框:Combo1、Combo2、Combo3和4个可用项(“A”、“B”、“C”、“D”)

  • 我在Combo1上选择“A”。Combo2和Combo3将有“B”、“C”和“D”
  • 然后我在Combo2上选择“C”。Combo3将有“B”和“D”可用
  • 我点击Combo1,它当前在“A”处被选中。选项“A”、“B”和“D”可用
  • 我尝试了以下方法:

    private ObservableCollection<string> _ItemList;
    public ObservableCollection<string> ItemList
        {
            get
            {
                return _ItemList;
            }
            set
            {
                _ItemList = value;
                NotifyPropertyChanged("ItemList"); 
            }
        }
    
    public void NotifyPropertyChanged(string name)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,new PropertyChangedEventArgs(name));
            }
        }
    
    private observeCollection\u ItemList;
    公共可观察收集项目列表
    {
    得到
    {
    返回项目列表;
    }
    设置
    {
    _ItemList=值;
    NotifyPropertyChanged(“项目列表”);
    }
    }
    public void NotifyPropertyChanged(字符串名称)
    {
    if(PropertyChanged!=null)
    {
    PropertyChanged(此,新PropertyChangedEventArgs(名称));
    }
    }
    
    然后将每个组合框绑定到
    ItemList
    。但是,每当我删除在其他组合框中选择的选项时,这些组合框将变为空白。是为每个组合框维护不同列表的唯一选项,还是有更优雅的解决方案?

    private List\u ItemList=new List();
    
    private List<string> _ItemList = new List<string>();
    
    private string string1selected; 
    private string string2selected;
    
    public IEnemerable<string> ItemList1
    {
       get
       {
           return _ItemList.Where(x => x != String2selected);
       }
    }
    public string String2selected
    {
       get
       {
           return string2selected;
       }
       set 
       {
           if (string2selected == value) return;
           NotifypropertyChanged("String2selected");
           NotifypropertyChanged("ItemList1");
       }
    }
    
    选择私人字符串; 选择私人字符串; 公共IEneRemerable项目列表1 { 得到 { 返回_ItemList.Where(x=>x!=String2selected); } } 选择公共字符串字符串 { 得到 { 选举产生的选举结果; } 设置 { if(string2selected==value)返回; NotifypropertyChanged(“String2selected”); NotifypropertyChanged(“项目列表1”); } }
    我有四个组合框,可以按照您的要求工作,但这是一个粗略的版本

    WPF版本

    XAML:

    
    
    和代码隐藏:

    public partial class MainWindow : Window
    {
        string[] list = { "", "A", "B", "C", "D" };
        List<string> list1 = new List<string>() { "", "A", "B", "C", "D" };
        List<string> list2 = new List<string>() { "", "A", "B", "C", "D" };
        List<string> list3 = new List<string>() { "", "A", "B", "C", "D" };
        List<string> list4 = new List<string>() { "", "A", "B", "C", "D" };
        bool ListUpdating = false;
    
    
        public MainWindow()
        {
            InitializeComponent();
            foreach (string str in list)
            {
                Combo_1.Items.Add(str);
                Combo_2.Items.Add(str);
                Combo_3.Items.Add(str);
                Combo_4.Items.Add(str);
            }
        }
    
        private void Combo_1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = Combo_1.SelectedItem.ToString();
                string combo2 = "";
                string combo3 = "";
                string combo4 = "";
    
                try
                {
                    combo2 = Combo_2.Text;
                }
                catch { }
                try
                {
                    combo3 = Combo_3.Text;
                }
                catch { }
                try
                {
                    combo4 = Combo_4.Text;
                }
                catch { }
    
    
                if (combo1 == "")
                {
                    for (int i = 0; i < list1.Count; i++)
                    {
                        if (!list2.Contains(list1[i]))
                        {
                            list2.Add(list1[i]);
                            Combo_2.Items.Clear();
                            list2.Sort();
    
                            for (int u = 0; u < list2.Count; u++)
                            {
                                Combo_2.Items.Add(list2[u]);
                                if (list2[u] == combo2)
                                    Combo_2.SelectedIndex = u;
                            }
                        }
                        if (!list3.Contains(list1[i]))
                        {
                            list3.Add(list1[i]);
                            Combo_3.Items.Clear();
                            list3.Sort();
    
                            for (int u = 0; u < list3.Count; u++)
                            {
                                Combo_3.Items.Add(list3[u]);
                                if (list3[u] == combo3)
                                    Combo_3.SelectedIndex = u;
                            }
                        }
                        if (!list4.Contains(list1[i]))
                        {
                            list4.Add(list1[i]);
                            Combo_4.Items.Clear();
                            list4.Sort();
    
                            for (int u = 0; u < list4.Count; u++)
                            {
                                Combo_4.Items.Add(list4[u]);
                                if (list4[u] == combo4)
                                    Combo_4.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_2.Items.Count; i++)
                    {
                        if (combo1 == Combo_2.Items[i].ToString())
                        {
                            Combo_2.Items.RemoveAt(i);
                            list2.RemoveAt(i);
                            list2.Sort();
                            i = Combo_2.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_3.Items.Count; i++)
                    {
                        if (combo1 == Combo_3.Items[i].ToString())
                        {
                            Combo_3.Items.RemoveAt(i);
                            list3.RemoveAt(i);
                            list3.Sort();
                            i = Combo_3.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_4.Items.Count; i++)
                    {
                        if (combo1 == Combo_4.Items[i].ToString())
                        {
                            Combo_4.Items.RemoveAt(i);
                            list4.RemoveAt(i);
                            list4.Sort();
                            i = Combo_4.Items.Count;
                        }
                    }
                }
    
                ListUpdating = false;
            }
        }
    
        private void Combo_2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = "";
                string combo2 = Combo_2.SelectedItem.ToString();
                string combo3 = "";
                string combo4 = "";
    
                try
                {
                    combo1 = Combo_1.Text;
                }
                catch { }
                try
                {
                    combo3 = Combo_3.Text;
                }
                catch { }
                try
                {
                    combo4 = Combo_4.Text;
                }
                catch { }
    
                if (combo2 == "")
                {
                    for (int i = 0; i < list2.Count; i++)
                    {
                        if (!list1.Contains(list2[i]))
                        {
                            list1.Add(list2[i]);
                            Combo_1.Items.Clear();
                            list1.Sort();
    
                            for (int u = 0; u < list1.Count; u++)
                            {
                                Combo_1.Items.Add(list2[u]);
                                if (list1[u] == combo1)
                                    Combo_1.SelectedIndex = u;
                            }
                        }
                        if (!list3.Contains(list2[i]))
                        {
                            list3.Add(list2[i]);
                            Combo_3.Items.Clear();
                            list3.Sort();
    
                            for (int u = 0; u < list3.Count; u++)
                            {
                                Combo_3.Items.Add(list3[u]);
                                if (list3[u] == combo3)
                                    Combo_3.SelectedIndex = u;
                            }
                        }
                        if (!list4.Contains(list2[i]))
                        {
                            list4.Add(list2[i]);
                            Combo_4.Items.Clear();
                            list4.Sort();
    
                            for (int u = 0; u < list4.Count; u++)
                            {
                                Combo_4.Items.Add(list4[u]);
                                if (list4[u] == combo4)
                                    Combo_4.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_1.Items.Count; i++)
                    {
                        if (combo2 == Combo_1.Items[i].ToString())
                        {
                            Combo_1.Items.RemoveAt(i);
                            list1.RemoveAt(i);
                            list1.Sort();
                            i = Combo_1.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_3.Items.Count; i++)
                    {
                        if (combo2 == Combo_3.Items[i].ToString())
                        {
                            Combo_3.Items.RemoveAt(i);
                            list3.RemoveAt(i);
                            list3.Sort();
                            i = Combo_3.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_4.Items.Count; i++)
                    {
                        if (combo2 == Combo_4.Items[i].ToString())
                        {
                            Combo_4.Items.RemoveAt(i);
                            list4.RemoveAt(i);
                            list4.Sort();
                            i = Combo_4.Items.Count;
                        }
                    }
                }
                ListUpdating = false;
            }
        }
    
        private void Combo_3_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = "";
                string combo2 = "";
                string combo3 = Combo_3.SelectedItem.ToString();
                string combo4 = "";
    
                try
                {
                    combo1 = Combo_1.Text;
                }
                catch { }
                try
                {
                    combo2 = Combo_2.Text;
                }
                catch { }
                try
                {
                    combo4 = Combo_4.Text;
                }
                catch { }
    
                if (combo3 == "")
                {
                    for (int i = 0; i < list3.Count; i++)
                    {
                        if (!list1.Contains(list3[i]))
                        {
                            list1.Add(list3[i]);
                            Combo_1.Items.Clear();
                            list1.Sort();
    
                            for (int u = 0; u < list1.Count; u++)
                            {
                                Combo_1.Items.Add(list1[u]);
                                if (list1[u] == combo1)
                                    Combo_1.SelectedIndex = u;
                            }
                        }
                        if (!list2.Contains(list3[i]))
                        {
                            list2.Add(list3[i]);
                            Combo_2.Items.Clear();
                            list2.Sort();
    
                            for (int u = 0; u < list2.Count; u++)
                            {
                                Combo_2.Items.Add(list2[u]);
                                if (list2[u] == combo2)
                                    Combo_2.SelectedIndex = u;
                            }
                        }
                        if (!list4.Contains(list3[i]))
                        {
                            list4.Add(list3[i]);
                            Combo_4.Items.Clear();
                            list4.Sort();
    
                            for (int u = 0; u < list4.Count; u++)
                            {
                                Combo_4.Items.Add(list4[u]);
                                if (list4[u] == combo4)
                                    Combo_4.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_2.Items.Count; i++)
                    {
                        if (combo3 == Combo_2.Items[i].ToString())
                        {
                            Combo_2.Items.RemoveAt(i);
                            list2.RemoveAt(i);
                            i = Combo_2.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_1.Items.Count; i++)
                    {
                        if (combo3 == Combo_1.Items[i].ToString())
                        {
                            Combo_1.Items.RemoveAt(i);
                            list1.RemoveAt(i);
                            i = Combo_1.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_4.Items.Count; i++)
                    {
                        if (combo3 == Combo_4.Items[i].ToString())
                        {
                            Combo_4.Items.RemoveAt(i);
                            list4.RemoveAt(i);
                            i = Combo_4.Items.Count;
                        }
                    }
                }
                ListUpdating = false;
            }
        }
    
        private void Combo_4_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = "";
                string combo2 = "";
                string combo3 = "";
                string combo4 = Combo_4.SelectedItem.ToString();
    
                try
                {
                    combo1 = Combo_1.Text;
                }
                catch { }
                try
                {
                    combo2 = Combo_2.Text;
                }
                catch { }
                try
                {
                    combo3 = Combo_3.Text;
                }
                catch { }
    
                if (combo4 == "")
                {
                    for (int i = 0; i < list4.Count; i++)
                    {
                        if (!list1.Contains(list4[i]))
                        {
                            list1.Add(list4[i]);
                            Combo_1.Items.Clear();
                            list1.Sort();
    
                            for (int u = 0; u < list1.Count; u++)
                            {
                                Combo_1.Items.Add(list1[u]);
                                if (list1[u] == combo1)
                                    Combo_1.SelectedIndex = u;
                            }
                        }
                        if (!list2.Contains(list4[i]))
                        {
                            list2.Add(list4[i]);
                            Combo_2.Items.Clear();
                            list2.Sort();
    
                            for (int u = 0; u < list2.Count; u++)
                            {
                                Combo_2.Items.Add(list2[u]);
                                if (list2[u] == combo2)
                                    Combo_2.SelectedIndex = u;
                            }
                        }
                        if (!list3.Contains(list4[i]))
                        {
                            list3.Add(list4[i]);
                            Combo_3.Items.Clear();
                            list3.Sort();
    
                            for (int u = 0; u < list3.Count; u++)
                            {
                                Combo_3.Items.Add(list3[u]);
                                if (list3[u] == combo3)
                                    Combo_3.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_2.Items.Count; i++)
                    {
                        if (combo4 == Combo_2.Items[i].ToString())
                        {
                            Combo_2.Items.RemoveAt(i);
                            list2.RemoveAt(i);
                            i = Combo_2.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_3.Items.Count; i++)
                    {
                        if (combo4 == Combo_3.Items[i].ToString())
                        {
                            Combo_3.Items.RemoveAt(i);
                            list3.RemoveAt(i);
                            i = Combo_3.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_1.Items.Count; i++)
                    {
                        if (combo4 == Combo_1.Items[i].ToString())
                        {
                            Combo_1.Items.RemoveAt(i);
                            list1.RemoveAt(i);
                            i = Combo_1.Items.Count;
                        }
                    }
                }
                ListUpdating = false;
            }
        }
    }
    
    公共部分类主窗口:窗口
    {
    字符串[]列表={”、“A”、“B”、“C”、“D”};
    List list1=新列表(){“”,“A”,“B”,“C”,“D”};
    List list2=新列表(){“”,“A”,“B”,“C”,“D”};
    List list3=新列表(){“”,“A”,“B”,“C”,“D”};
    List list4=新列表(){“”,“A”,“B”,“C”,“D”};
    bool ListUpdating=false;
    公共主窗口()
    {
    初始化组件();
    foreach(列表中的字符串str)
    {
    组合_1.项目。添加(str);
    组合2.项目.添加(str);
    组合3.项目.添加(str);
    组合4.项目.添加(str);
    }
    }
    私有无效组合_1_SelectionChanged(对象发送方,SelectionChangedEventArgs e)
    {
    如果(ListUpdating==false)
    {
    ListUpdating=true;
    字符串combo1=Combo_1.SelectedItem.ToString();
    字符串组合2=“”;
    字符串组合3=“”;
    字符串组合4=“”;
    尝试
    {
    combo2=Combo_2.Text;
    }
    捕获{}
    尝试
    {
    combo3=Combo_3.Text;
    }
    捕获{}
    尝试
    {
    combo4=Combo_4.Text;
    }
    捕获{}
    如果(组合1==“”)
    {
    for(int i=0;ipublic partial class MainWindow : Window
    {
        string[] list = { "", "A", "B", "C", "D" };
        List<string> list1 = new List<string>() { "", "A", "B", "C", "D" };
        List<string> list2 = new List<string>() { "", "A", "B", "C", "D" };
        List<string> list3 = new List<string>() { "", "A", "B", "C", "D" };
        List<string> list4 = new List<string>() { "", "A", "B", "C", "D" };
        bool ListUpdating = false;
    
    
        public MainWindow()
        {
            InitializeComponent();
            foreach (string str in list)
            {
                Combo_1.Items.Add(str);
                Combo_2.Items.Add(str);
                Combo_3.Items.Add(str);
                Combo_4.Items.Add(str);
            }
        }
    
        private void Combo_1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = Combo_1.SelectedItem.ToString();
                string combo2 = "";
                string combo3 = "";
                string combo4 = "";
    
                try
                {
                    combo2 = Combo_2.Text;
                }
                catch { }
                try
                {
                    combo3 = Combo_3.Text;
                }
                catch { }
                try
                {
                    combo4 = Combo_4.Text;
                }
                catch { }
    
    
                if (combo1 == "")
                {
                    for (int i = 0; i < list1.Count; i++)
                    {
                        if (!list2.Contains(list1[i]))
                        {
                            list2.Add(list1[i]);
                            Combo_2.Items.Clear();
                            list2.Sort();
    
                            for (int u = 0; u < list2.Count; u++)
                            {
                                Combo_2.Items.Add(list2[u]);
                                if (list2[u] == combo2)
                                    Combo_2.SelectedIndex = u;
                            }
                        }
                        if (!list3.Contains(list1[i]))
                        {
                            list3.Add(list1[i]);
                            Combo_3.Items.Clear();
                            list3.Sort();
    
                            for (int u = 0; u < list3.Count; u++)
                            {
                                Combo_3.Items.Add(list3[u]);
                                if (list3[u] == combo3)
                                    Combo_3.SelectedIndex = u;
                            }
                        }
                        if (!list4.Contains(list1[i]))
                        {
                            list4.Add(list1[i]);
                            Combo_4.Items.Clear();
                            list4.Sort();
    
                            for (int u = 0; u < list4.Count; u++)
                            {
                                Combo_4.Items.Add(list4[u]);
                                if (list4[u] == combo4)
                                    Combo_4.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_2.Items.Count; i++)
                    {
                        if (combo1 == Combo_2.Items[i].ToString())
                        {
                            Combo_2.Items.RemoveAt(i);
                            list2.RemoveAt(i);
                            list2.Sort();
                            i = Combo_2.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_3.Items.Count; i++)
                    {
                        if (combo1 == Combo_3.Items[i].ToString())
                        {
                            Combo_3.Items.RemoveAt(i);
                            list3.RemoveAt(i);
                            list3.Sort();
                            i = Combo_3.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_4.Items.Count; i++)
                    {
                        if (combo1 == Combo_4.Items[i].ToString())
                        {
                            Combo_4.Items.RemoveAt(i);
                            list4.RemoveAt(i);
                            list4.Sort();
                            i = Combo_4.Items.Count;
                        }
                    }
                }
    
                ListUpdating = false;
            }
        }
    
        private void Combo_2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = "";
                string combo2 = Combo_2.SelectedItem.ToString();
                string combo3 = "";
                string combo4 = "";
    
                try
                {
                    combo1 = Combo_1.Text;
                }
                catch { }
                try
                {
                    combo3 = Combo_3.Text;
                }
                catch { }
                try
                {
                    combo4 = Combo_4.Text;
                }
                catch { }
    
                if (combo2 == "")
                {
                    for (int i = 0; i < list2.Count; i++)
                    {
                        if (!list1.Contains(list2[i]))
                        {
                            list1.Add(list2[i]);
                            Combo_1.Items.Clear();
                            list1.Sort();
    
                            for (int u = 0; u < list1.Count; u++)
                            {
                                Combo_1.Items.Add(list2[u]);
                                if (list1[u] == combo1)
                                    Combo_1.SelectedIndex = u;
                            }
                        }
                        if (!list3.Contains(list2[i]))
                        {
                            list3.Add(list2[i]);
                            Combo_3.Items.Clear();
                            list3.Sort();
    
                            for (int u = 0; u < list3.Count; u++)
                            {
                                Combo_3.Items.Add(list3[u]);
                                if (list3[u] == combo3)
                                    Combo_3.SelectedIndex = u;
                            }
                        }
                        if (!list4.Contains(list2[i]))
                        {
                            list4.Add(list2[i]);
                            Combo_4.Items.Clear();
                            list4.Sort();
    
                            for (int u = 0; u < list4.Count; u++)
                            {
                                Combo_4.Items.Add(list4[u]);
                                if (list4[u] == combo4)
                                    Combo_4.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_1.Items.Count; i++)
                    {
                        if (combo2 == Combo_1.Items[i].ToString())
                        {
                            Combo_1.Items.RemoveAt(i);
                            list1.RemoveAt(i);
                            list1.Sort();
                            i = Combo_1.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_3.Items.Count; i++)
                    {
                        if (combo2 == Combo_3.Items[i].ToString())
                        {
                            Combo_3.Items.RemoveAt(i);
                            list3.RemoveAt(i);
                            list3.Sort();
                            i = Combo_3.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_4.Items.Count; i++)
                    {
                        if (combo2 == Combo_4.Items[i].ToString())
                        {
                            Combo_4.Items.RemoveAt(i);
                            list4.RemoveAt(i);
                            list4.Sort();
                            i = Combo_4.Items.Count;
                        }
                    }
                }
                ListUpdating = false;
            }
        }
    
        private void Combo_3_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = "";
                string combo2 = "";
                string combo3 = Combo_3.SelectedItem.ToString();
                string combo4 = "";
    
                try
                {
                    combo1 = Combo_1.Text;
                }
                catch { }
                try
                {
                    combo2 = Combo_2.Text;
                }
                catch { }
                try
                {
                    combo4 = Combo_4.Text;
                }
                catch { }
    
                if (combo3 == "")
                {
                    for (int i = 0; i < list3.Count; i++)
                    {
                        if (!list1.Contains(list3[i]))
                        {
                            list1.Add(list3[i]);
                            Combo_1.Items.Clear();
                            list1.Sort();
    
                            for (int u = 0; u < list1.Count; u++)
                            {
                                Combo_1.Items.Add(list1[u]);
                                if (list1[u] == combo1)
                                    Combo_1.SelectedIndex = u;
                            }
                        }
                        if (!list2.Contains(list3[i]))
                        {
                            list2.Add(list3[i]);
                            Combo_2.Items.Clear();
                            list2.Sort();
    
                            for (int u = 0; u < list2.Count; u++)
                            {
                                Combo_2.Items.Add(list2[u]);
                                if (list2[u] == combo2)
                                    Combo_2.SelectedIndex = u;
                            }
                        }
                        if (!list4.Contains(list3[i]))
                        {
                            list4.Add(list3[i]);
                            Combo_4.Items.Clear();
                            list4.Sort();
    
                            for (int u = 0; u < list4.Count; u++)
                            {
                                Combo_4.Items.Add(list4[u]);
                                if (list4[u] == combo4)
                                    Combo_4.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_2.Items.Count; i++)
                    {
                        if (combo3 == Combo_2.Items[i].ToString())
                        {
                            Combo_2.Items.RemoveAt(i);
                            list2.RemoveAt(i);
                            i = Combo_2.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_1.Items.Count; i++)
                    {
                        if (combo3 == Combo_1.Items[i].ToString())
                        {
                            Combo_1.Items.RemoveAt(i);
                            list1.RemoveAt(i);
                            i = Combo_1.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_4.Items.Count; i++)
                    {
                        if (combo3 == Combo_4.Items[i].ToString())
                        {
                            Combo_4.Items.RemoveAt(i);
                            list4.RemoveAt(i);
                            i = Combo_4.Items.Count;
                        }
                    }
                }
                ListUpdating = false;
            }
        }
    
        private void Combo_4_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListUpdating == false)
            {
                ListUpdating = true;
                string combo1 = "";
                string combo2 = "";
                string combo3 = "";
                string combo4 = Combo_4.SelectedItem.ToString();
    
                try
                {
                    combo1 = Combo_1.Text;
                }
                catch { }
                try
                {
                    combo2 = Combo_2.Text;
                }
                catch { }
                try
                {
                    combo3 = Combo_3.Text;
                }
                catch { }
    
                if (combo4 == "")
                {
                    for (int i = 0; i < list4.Count; i++)
                    {
                        if (!list1.Contains(list4[i]))
                        {
                            list1.Add(list4[i]);
                            Combo_1.Items.Clear();
                            list1.Sort();
    
                            for (int u = 0; u < list1.Count; u++)
                            {
                                Combo_1.Items.Add(list1[u]);
                                if (list1[u] == combo1)
                                    Combo_1.SelectedIndex = u;
                            }
                        }
                        if (!list2.Contains(list4[i]))
                        {
                            list2.Add(list4[i]);
                            Combo_2.Items.Clear();
                            list2.Sort();
    
                            for (int u = 0; u < list2.Count; u++)
                            {
                                Combo_2.Items.Add(list2[u]);
                                if (list2[u] == combo2)
                                    Combo_2.SelectedIndex = u;
                            }
                        }
                        if (!list3.Contains(list4[i]))
                        {
                            list3.Add(list4[i]);
                            Combo_3.Items.Clear();
                            list3.Sort();
    
                            for (int u = 0; u < list3.Count; u++)
                            {
                                Combo_3.Items.Add(list3[u]);
                                if (list3[u] == combo3)
                                    Combo_3.SelectedIndex = u;
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Combo_2.Items.Count; i++)
                    {
                        if (combo4 == Combo_2.Items[i].ToString())
                        {
                            Combo_2.Items.RemoveAt(i);
                            list2.RemoveAt(i);
                            i = Combo_2.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_3.Items.Count; i++)
                    {
                        if (combo4 == Combo_3.Items[i].ToString())
                        {
                            Combo_3.Items.RemoveAt(i);
                            list3.RemoveAt(i);
                            i = Combo_3.Items.Count;
                        }
                    }
    
                    for (int i = 0; i < Combo_1.Items.Count; i++)
                    {
                        if (combo4 == Combo_1.Items[i].ToString())
                        {
                            Combo_1.Items.RemoveAt(i);
                            list1.RemoveAt(i);
                            i = Combo_1.Items.Count;
                        }
                    }
                }
                ListUpdating = false;
            }
        }
    }