gpt4 book ai didi

C# 组合框仅在调试中设置

转载 作者:行者123 更新时间:2023-11-30 12:57:47 26 4
gpt4 key购买 nike

我一直在用 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;
}

奇怪的是,如果我在正常 Debug模式下运行程序或单步执行它,组合框将始终显示“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;


}

看来它依赖于这两行代码的顺序

这个组合给出了“unset”

        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# 组合框仅在调试中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com