c # привязка данных ComboBox: InvalidArgument = значение «1» недопустимо для «SelectedIndex» - PullRequest
4 голосов
/ 27 ноября 2008

У меня проблемы с установкой SelectedIndex для привязанного ComboBox (в форме окна), который я добавляю в форму во время выполнения, и подозреваю, что происходит что-то странное.

Когда я пытаюсь это сделать, я получаю сообщение об ошибке «InvalidArgument = значение« 1 »недопустимо для« SelectedIndex ».»

private void Form1_Load(object sender, EventArgs e)
        {
            List<string> comboBoxList = new List<string>();
            comboBoxList.Add("Apples");
            comboBoxList.Add("Oranges");
            comboBoxList.Add("Pears");

            ComboBox comboBox1 = new ComboBox();
            comboBox1.DataSource = comboBoxList;
            comboBox1.SelectedIndex = 1;
            this.Controls.Add(comboBox1);
        }

Однако, если я добавлю элементы в ComboBox напрямую, проблем не возникнет, например:

comboBox1.Add("Apples");

Кроме того, не возникает проблем, если я добавляю элемент управления в форму ДО ТОГО, как я установил SelectedIndex, например:

ComboBox comboBox1 = new ComboBox();
this.Controls.Add(comboBox1);
comboBox1.DataSource = comboBoxList;
comboBox1.SelectedIndex = 1;

Может кто-нибудь объяснить, почему я не могу установить выбранный индекс из источника данных, пока элемент управления не будет добавлен в форму?

1 Ответ

6 голосов
/ 27 ноября 2008

Насколько я понимаю, привязка данных обрабатывается связывающим контентом, обычно это родительский связывающий контекст. Таким образом, привязка источника данных не произойдет, пока вы не добавите comboBox в форму. Вы также можете заставить это работать, если вы зададите для привязывающего контекста comboBox контекст связывания форм.

comboBox1.BindingContext = this.BindingContext;
comboBox1.DataSource = comboBoxList;
comboBox1.SelectedIndex = 1;
this.Controls.Add(comboBox1);

Класс BindingContext

Что такое BindingContext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...