当我尝试这段代码时,我会得到上面的错误。我试着给just my code,但没用。(这是默认的)
Here is my XML file
错误发生在cmbProduct_SelectedIndexChanged事件中。
cmbProduct --> combobox
cmbBrand --> combobox全球
DataSet dsUpdate = new DataSet();Form_load
dsUpdate.ReadXml(@"...\..\stock.xml");
cmbProduct.DataSource = dsUpdate.Tables[0]
.DefaultView.ToTable(true, "productname");//.DefaultView;
cmbProduct.DisplayMember = "productname";
cmbProduct.SelectedIndex = 0;cmbProduct_SelectedIndexChanged
cmbBrand.Items.Clear();
foreach (DataRow Row in dsUpdate.Tables[0].Select("productname='" + cmbProduct.Text + "'"))
{
//cmbBrand.SelectedIndex = i;
cmbBrand.Items.Add(Row["brandname"].ToString());
//i++;
}
cmbBrand.SelectedIndex = 0; /*ERROR*/ 请帮帮忙
提前谢谢。
发布于 2012-10-11 12:37:45
问题是:
启动应用程序时,cmbBrand中没有项,但cmbProduct会触发SelectedIndexChanged。
试试这个:
从SelectedIndexChanged中删除Form1.Designer.cs事件初始化。试着找出以下几行:
this.cmbProduct.SelectedIndexChanged += new System.EventHandler(this.cmbProduct_SelectedIndexChanged);之后,当您用来自xml文件的数据填充DataSet时,初始化SelectedIndexChanged事件:
dsUpdate.ReadXml(@"...\..\stock.xml");
cmbProduct.DataSource = dsUpdate.Tables[0].DefaultView.ToTable(true, "productname");//.DefaultView;
cmbProduct.DisplayMember = "productname";
this.cmbProduct.SelectedIndexChanged += new System.EventHandler(this.cmbProduct_SelectedIndexChanged);
cmbProduct.SelectedIndex = 0;发布于 2018-02-23 08:26:43
我也犯了同样的错误。我认为这个错误有一些原因。因此,我的错误与“在另一个线程中设置DataSource不工作”有关。
示例
//Run in another thread
myComboBox.DataSource = myDataSource; //not set修正用
myComboBox.Invoke(new Action(() => myComboBox.DataSource = myDataSource));发布于 2016-03-17 06:51:17
你也可以试试这个。在设置组合框之前,DataSource设置它的BindingContext
cmbProduct.BindingContext = this.BindingContext;https://stackoverflow.com/questions/12839444
复制相似问题