在 C# 中以编程方式声明组合框时,无法在初始状态下设置 selectedValue
本文关键字:初始状态 selectedValue 设置 编程 声明 方式 组合 | 更新日期: 2023-09-27 18:34:57
我在这里遇到了一个问题,当我在编码中创建组合框时,我发现在与数据源绑定后无法立即设置 selectedValue。下面的编码用于帮助我解释问题。
我想我已经发现了问题,问题可能是由于同步引起的。这意味着这行代码 (comboBox1.SelectedIndex = 2( 将在 combbobox 数据源正确绑定之前执行,因此在执行 comboBox1.SelectedIndex = 2 时,组合框找不到数据并生成错误。如果我错了,请纠正我。
我的解决方案是在 comboBox1.DataSource = data 之后立即放置一个 while 循环,以确保组合框在进入下一行代码之前正确绑定。我确信这不是一个好方法。
还有其他更好的解决方案吗?提前谢谢。
public partial class Form2 : Form
{
private ComboBox comboBox1 = new ComboBox();
public Form2()
{
InitializeComponent();
string[] data = { "a", "b", "c" };
comboBox1.DataSource = data;
//This line of code is used to confirm the data source
//is bind to the combo box
while (comboBox1.DataSource == null) ;
comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
this.Controls.Add(comboBox1);
comboBox1.SelectedIndex = 2;
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("");
}
}
只需将ComboBox.BindingContext
设置为虚拟实例即可。
string[] data = { "a", "b", "c" };
comboBox1.BindingContext = new BindingContext();
comboBox1.DataSource = data;
comboBox1.SelectedIndex = 2;
请参阅 ComboBox.DataSource 属性和 BindingContext 类