2013-10-10 6 views
0

У меня есть ToolStripComboBox, что я заселить с помощью DataTable:Сразу читать данные из DataSource

DataTable dt = Program.DB.GetView("myview"); 
cbInfo.ComboBox.DataSource = dt; 
cbInfo.ComboBox.DisplayMember = "name"; 

немного дальше в том же методе, я хочу прочитать пункты в cbInfo:

someinfo = (int)cbInfo.ComboBox.Items[0]; 

но эта информация не представляется доступной (ArgumentOutOfRangeException). Как я могу прочитать информацию, как только она будет доступна?

+0

'cbInfo.ComboBox.Items [0]'? – Bolu

+0

@Bolu нет такой же проблема. Похоже, что загрузка данных не выполняется в основном потоке. –

+0

Что произойдет, если вы вызываете [cbInfo.Invalidate()] (http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.invalidate.aspx) раньше? –

ответ

0

Опираясь на предметы, возможно, не очень хорошая идея.

Лучше подход будет брать данные из источника, например .:

someinfo = (int)((DataTable)cbInfo.ComboBox.DataSource).Rows[0][0]; 
0

Попробуйте установить выбранное значение индекса на поле со списком после того, как вы загрузили данные в него, а затем slecting cbinfo.comboboc.selectedItem

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

+0

Я не могу установить 'SelectedItem', поскольку у' ComboBox' пока нет элементов. –

+0

Затем вы не можете выполнить someinfo = (int) cbInfo.ComboBox.Items [0]; Пока вы не загрузите предметы. Вы проверяли, заполняется ли datatable? – DrewbieDoo

+0

Это полностью моя точка .... есть данные после этого метода, но не внутри метода. Тем не менее, «DataTable» красиво заполнен. –

Смежные вопросы