从C#形式的组合框窗口的选定值中搜索

本文关键字:搜索 窗口 组合 | 更新日期: 2023-09-27 18:21:22

我在一个表单中有大约10个组合框,我需要做的是,如果从任何组合框(可能是1个或多个组合框)中选择了一个项目,搜索字符串数组和从组合框中选择的值是否一致,但不包括尚未选择或更改的组合框,我只是想知道是否有办法做到这一点。

从C#形式的组合框窗口的选定值中搜索

您应该能够存储类的信息,这样您就可以确定当前的ComboBox是否来自其他类。我制作了一个小样本,它使用SelectedIndexChanged上的事件处理程序跟踪对ComboBox所做的更改,并使用LINQ来过滤和排除当前的ComboBox

List<ComboBox> _allComboBoxes;
ComboBox _comboBox1;
ComboBox _comboBox2;
string[] _values;
void InitForm()
{
    // TODO Implement values.
    _values = new string[0];
    _allComboBoxes = new List<ComboBox>();
    _comboBox1 = new ComboBox();
    _allComboBoxes.Add(_comboBox1);
    _comboBox1.SelectedIndexChanged += ComboBoxSelectedIndexChanged;
    _comboBox2 = new ComboBox();
    _allComboBoxes.Add(_comboBox2);
    _comboBox2.SelectedIndexChanged += ComboBoxSelectedIndexChanged;
}
void ComboBoxSelectedIndexChanged(object sender, EventArgs e)
{
    if (HasCoincidence(sender as ComboBox, _values, _allComboBoxes))
    {
        throw new InvalidOperationException("Coincidence occurred.");
    }
}
bool HasCoincidence(ComboBox comboBox, string[] values, IEnumerable<ComboBox> allComboBoxes)
{
    IEnumerable<ComboBox> excludedComboBoxes = allComboBoxes.Where(c => c != comboBox);
    throw new NotImplementedException("Implement ComboBox to string[] comparison.");
}