привязка нескольких комбинированных списков к одному списку <> - PullRequest
4 голосов
/ 03 января 2011

Я пытаюсь связать несколько комбинированных списков в один список.Однако, когда я выбираю значение в 1 комбинированном списке, все комбинированные списки, привязанные к списку, изменяются на одно и то же значение.

List<Country> countryList = new List<Country>();
// Add contries to list.  There are two properties string Name, and string Code
comboBox1.DataSource = countryList;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Code";


comboBox2.DataSource = countryList;
comboBox2.DisplayMember = "Name";
comboBox2.ValueMember = "Code";

Теперь, когда я выбираю страну из comboBox1, он также выбирает comboBox2.Я бы предпочел не создавать отдельный список для каждого ComboBox.

Ответы [ 2 ]

4 голосов
/ 03 января 2011

Извините, вы должны создать новый список .Если вы можете просто создать другой список.

comboBox2.DataSource = countryList.ToList();

Однако, если это не сработает, вы можете создать отдельный контекст привязки для одного из полей со списком и сделать это таким образом

        BindingContext bcG1 = new BindingContext();

        comboBox1.BindingContext = bcG1;

        comboBox1.DataSource = Countries;
        comboBox1.DisplayMember = "Name";
        comboBox1.ValueMember = "Code";

        comboBox2.DataSource = Countries;
        comboBox2.DisplayMember = "Name";
        comboBox2.ValueMember = "Code";
1 голос
/ 29 мая 2013

Если есть только пара, может быть так:

comboBox1.DataSource = Countries;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Code";

comboBox2.DataSource = Countries;
comboBox2.BindingContext = new BindingContext();
comboBox2.DisplayMember = "Name";
comboBox2.ValueMember = "Code";

Если их больше или в разных формах, лучше создать метод в общедоступном:

public ComboBox bindCombo(ComboBox _cb, DataTable _dt)
{
    _cb.DataSource = _dt;
    _cb.BindingContext = new BindingContext();
    _cb.ValueMember = _dt.Columns[0].ToString();
    _cb.DisplayMember = _dt.Columns[0].ToString();
    return _cb;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...