4
我一直在C#(VS Express 2015)中编写应用程序,并且有一个组合框,我希望预先填充保存的值。我似乎无法让组合框取得我尝试设置的值。我创建了一个新项目来证明这个错误。C#组合框仅在调试中设置
主要代码如下。另一个文件声明tableLayoutPanel。 drawComboBox函数应该使用给定的选定选项和行向面板添加组合框。
public Form1()
{
InitializeComponent();
drawComboBox(Options.Blue, 0);
}
public enum Options
{
Unset,
Blue,
Yellow,
Red
};
private void drawComboBox(Options SelectedOption, int row)
{
System.Windows.Forms.ComboBox colorCombo = new System.Windows.Forms.ComboBox();
colorCombo.DataSource = Enum.GetValues(typeof(Options));
colorCombo.Name = "colorCombo";
this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row);
colorCombo.SelectedItem = Options.Yellow;
}
怪异的一部分是,如果我运行正常调试模式或通过其单步组合框会一直显示程序“未设置”,但如果我打破了颜色设置,并在打开colorCombo项目之前本地调试窗口然后逐步完成,它将被正确设置。考虑到在调试器中查看问题解决了这个问题,这使得找出发生的事情变得非常痛苦。
我将不胜感激任何想法,谢谢。
数据绑定,就像.NET中的许多事情一样,是懒惰地完成的。何时必须完成。延迟到实际创建基础本地组合框为止。您通过查看调试器中的Items属性确实强制执行此操作。或者在赋值之前添加'var dummy = colorCombo.Handle;'。干净的方法是在Load事件中。 –