考虑以下代码。这是我在我创建的用户控件中实现的流程的简化。
//MyUserControl Constructor
public MyUserControl(field, value)
{
InitializeComponents();
string cType = resolveControlType(field);
switch (cType)
{
...
case "ComboBox": AddComboBox(field, value);
...
}
}
AddComboBox(string fieldID, object value)
{
ComboBox cbo = new ComboBox();
cbo.DisplayMember = "DisplayMember";
cbo.ValueMember = "ValueMember";
//We set the DataSource to a DataTable
cbo.DataSource = DBCaller.GetListAsDataTable(fieldID);
this.Controls.Add(cbo);
cbo.SelectedValue = value; //<-- Weird stuff happening here?!
// If you don't break here, it
// doesn't look like the correct
// record is selected.
// However, add a breakpoint,
// scroll through cbo's properties
// and this assignment will work
// properly when you continue?!
}
我的问题是,当我将值分配给控件时,ComboBox 中的文本会显示我的 DataSource 表中的第一项。
但是,如果我在该行上放置一个断点,cbo.SelectedValue = value;
并使用 Intellisense 滚动浏览与我的 ComboBox 关联的属性,则会在 ComboBox 上初始化一些东西来解决这个问题。一旦我继续运行代码,我的表单就会加载 ComboBox 上显示的正确值。
发生了什么事,我该如何解决?