我一直在用C#(VS Express 2015)编写一个应用程序,并且有一个组合框,我想预先填充一个保存的值.我似乎无法让组合框获取我尝试将其设置为的值.我创建了一个新项目来演示此错误.
主要代码如下.另一个文件声明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;
}
奇怪的是,如果我在正常调试模式下运行程序或单步执行它,组合框将始终显示“Unset”,但如果我在设置颜色之前中断并在Locals调试窗口中打开colorCombo项目然后单步执行它,它将被正确设置.考虑到调试器中的问题解决了这个问题,这使得弄清楚发生了什么不仅仅是一种痛苦.
我非常感谢任何想法,谢谢.
解决方法:
我不确定为什么会这样,但我可以告诉你如何解决它 –
请更改绘图功能中的步骤顺序,如此&它会工作正常.
private void drawComboBox(Options SelectedOption, int row)
{
System.Windows.Forms.ComboBox colorCombo = new System.Windows.Forms.ComboBox();
colorCombo.Name = "colorCombo";
this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row);
colorCombo.DataSource = Enum.GetValues(typeof(Options));
colorCombo.SelectedItem = Options.Yellow;
}
它似乎取决于这两行代码的顺序
这种组合给出了“未设置”
colorCombo.DataSource = Enum.GetValues(typeof(Options));
this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row);
如果你扭转它,它的工作原理
this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row);
colorCombo.DataSource = Enum.GetValues(typeof(Options));
标签:c,debugging,combobox 来源: https://codeday.me/bug/20190711/1433364.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。