C# 在C中以编程方式声明组合框时,无法将selectedValue设置为初始状态#
这里有一个问题,当我在编码中创建一个组合框时,我发现我无法在绑定数据源后立即设置selectedValue。下面的代码用于帮助我解释问题 我想我已经发现了这个问题,这个问题可能是由于同步。这意味着这行代码(comboBox1.SelectedIndex=2)将在combobox数据源正确绑定之前执行,因此combobox在执行comboBox1.SelectedIndex=2时无法找到数据并生成错误。如果我错了,请纠正我 我的解决方案是在comboBox1.DataSource=data之后立即放置一个while循环,以确保combobox在进入下一行代码之前已正确绑定。我相信这不是一个好办法 还有其他更好的解决方案吗???提前感谢C# 在C中以编程方式声明组合框时,无法将selectedValue设置为初始状态#,c#,winforms,combobox,selectedvalue,C#,Winforms,Combobox,Selectedvalue,这里有一个问题,当我在编码中创建一个组合框时,我发现我无法在绑定数据源后立即设置selectedValue。下面的代码用于帮助我解释问题 我想我已经发现了这个问题,这个问题可能是由于同步。这意味着这行代码(comboBox1.SelectedIndex=2)将在combobox数据源正确绑定之前执行,因此combobox在执行comboBox1.SelectedIndex=2时无法找到数据并生成错误。如果我错了,请纠正我 我的解决方案是在comboBox1.DataSource=data之后立即
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("");
}
}
只需将
组合框.BindingContext
设置为虚拟实例
string[] data = { "a", "b", "c" };
comboBox1.BindingContext = new BindingContext();
comboBox1.DataSource = data;
comboBox1.SelectedIndex = 2;
请参见和这似乎是示例代码中的一个输入错误,我认为您编写了
comboBox2
而不是Combox1
哈哈,输入错误,谢谢@Benoit Blanchon,我已经更正了