我想在C#中填充组合框,但出于某种原因,项目不会出现。C#Combobox不显示项目
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,但这也是为什么经常调用setter不起作用的原因。我不知道为什么IsHandleCreated
设置为false。表格已显示()n。
调用代码是什么? –
什么线程正在设置属性?它是一个计时器线程还是主要的“Windows消息循环”? –
我认为你将需要提供更多信息才能得到一个很好的答案。 – hspain