【发布时间】:2014-12-08 16:18:59
【问题描述】:
我正在用项目更新我的组合框,第一次打开表单时它工作正常,但第二次,它正在设置值,但它们没有显示出来。
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,并且所有值都有效。 但是当方法完成并重新绘制表单时,项目列表尚未更新。
我查看了 stackoverflow,找不到任何适合我的东西。
它在正确的线程上,我只能说 1 个实例。 我试过 BeginUpdate() / EndUpdate() 更新() 暂停/恢复布局
但仍然没有任何内容会更新此项目显示。
itemtoSelect 被传递到这个方法中,它是从另一个组合框事件 selectedindexchanged 调用的,最初是在我设置显示时。
我已经在代码中设置了调试点,并且项目都设置在第一个窗口打开和第二个窗口打开上。 我认为我唯一不能 100% 确定的是组合框是否是正确的组合框,就好像它是第一个窗口打开时的旧组合框。 我想我可以用 gethashcode() 检查这个是否有另一种方法来检查对象的引用以确认它是否是我认为的那个?
【问题讨论】:
-
哪种方法“完成”?您只显示一小段代码。这段代码是什么方法?你的 foreach 有一个错字
-
你已经检查过你在第一次之后进入了foreach
-
我检查了 gethashcode,它是我显示的组合框上的不同代码,我的断点触发并具有正确的值,所以我认为我正在编辑旧组合框,即不再可见。