繁体   English   中英

组合框项目不显示但已设置

[英]combobox items not displaying but are set

我正在使用项目更新我的组合框,第一次打开表单时它运行良好,但是第二次,它正在设置值,但未显示它们。

combo.Items.Clear();
int selectedIndex = -1;
foreach(var item in itemstoadd)
{
    int index = combo.Items.Add(item.Name + " - " + item.Description);
    if (item.Name.Equals(itemToSelect))
    {
        selectedIndex = index;
    }
}
combo.SelectedIndex = selectedIndex;

因此,第二次combo.Items的计数为7且所有值均有效。 但是,当方法完成并重新绘制窗体时,Items列表尚未更新。

我环顾了stackoverflow,找不到适合我的任何东西。

它在正确的线程上,我只能告诉一个实例。 我已经尝试了BeginUpdate()/ EndUpdate()Update()Suspend / ResumeLayout

但仍然没有任何东西会更新此项目显示。

itemtoSelect传递到此方法中,并且从另一个组合框事件selectedindexchanged调用此方法,最初在我设置显示时调用。

我在代码中命中了调试点,并且所有项均在第一个窗口和第二个窗口中设置。 我认为唯一不确定的是,组合框是否是正确的组合框,就好像它是从第一个窗口打开的旧组合框一样。 我认为我可以使用gethashcode()进行检查,是否有另一种方法可以检查对象的引用以确认是否是我认为的对象?

清除Combo.Items它将重置SelectedIndex。 然后,当您进行分配combo.SelectedIndex = selectedIndex; ,即使您将其设置为原始值,它也会生成一个新的SelectedIndexChanged事件。 如果尚未完成第一个SelectedIndexChanged处理程序调用的执行,则可能导致问题。

我有一个事件,我没有取消分配,这是保持原始组合框保持活动状态,并保持我在旧组合框上触发断点的事件。

一旦我在关闭窗口时取消分配了此事件,那么下次我创建窗口和组合框时,一切都很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM