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事件中。 –