Я пытаюсь заполнить поле со списком на С#, но по какой-то причине элементы не отображаются.
public List<string> items
{
set
{
combobox.Items.Clear();
foreach(string s in value)
{
combobox.Items.Add(s);
}
combobox.Update();
}
}
Это кажется невероятно простым кодом. Я просто не вижу, что не так. Вызывается так:
private void StoreNames(List<string> names)
{
if (selectionForm.InvokeRequired)
selectionForm.Invoke((MethodInvoker)delegate { selectionForm.items = names; });
else
selectionForm.items = names;
}
Интересно, что это работает, когда InvokeRequired
возвращает true, но не работает, когда возвращает false.
РЕДАКТИРОВАТЬ: я обнаружил, что selectionForm.IsHandleCreated
в настоящее время false
. Это приводит к тому, что InvokeRequired
возвращает false, но также и поэтому регулярный вызов сеттера не работает. Я понятия не имею, почему IsHandleCreated
имеет значение false. Форма была Show()n.
StoreNames
и как? Пожалуйста, используйте@
при ответе, чтобы мы получили уведомление, например. @Shadow сообщит мне, что вы ответили, чтобы я мог увидеть это и помочь в дальнейшем. - person Shadow Wizard Wearing Mask V2   schedule 03.08.2011StoreNames
вызывается асинхронно. Однако вызов поступил после того, как я позвонилselectionForm.Show()
. - person Daniel   schedule 03.08.2011while(!selectionForm.IsHandleCreated) Thread.Sleep(100);
в начало StoreNames. Просто застрял в бесконечном цикле. - person Daniel   schedule 03.08.2011