2012-10-11 218 views
5

我正在嘗試此代碼時出現上述錯誤。我試過給just my code但沒用。 (這是默認)
InvalidArgument ='0'的值對'SelectedIndex'無效。參數名稱:SelectedIndex

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*/ 

請幫忙
在此先感謝。

+0

不cmbBrand

例如

//Run in another thread myComboBox.DataSource = myDataSource; //not set 

修復它肯定有SOEM項?你也可以確認什麼對象類型cmbBrand是? – Chris

+0

是的,它有條目。當我不給'cmbBrand.SelectedIndex = 0;'在'cmbProduct_SelectedIndexChanged'時它顯示條目。但是爲了讓它一開始不顯示空值,我添加了'cmbBrand.SelectedIndex = 0;'。它給出了錯誤。 –

回答

5

問題是:

當你啓動應用程序時,你不必在cmbBrand項目,但cmbProduct觸發的SelectedIndexChanged。

試試這個:從Form1.Designer.cs

刪除SelectedIndexChanged事件初始化。嘗試找到下面這行:

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; 
+0

我嘗試過與你xml,並工作! –

+0

當我懸停在'cmbBrand.SelectedIndex = 0;'它說它擁有'-1',但正如你可以在我的xml文件中看到的,它有值,也是當我沒有給'cmbBrand.SelectedIndex = 0 ;',我的表單在cmbBrand中顯示值,然後當然它不保存'-1'。這是我不能理解的。 –

+0

嘗試編輯答案 –

1

你也可以試試這個。在設置組合框的DataSource設置它的BindingContext

cmbProduct.BindingContext = this.BindingContext; 
0

我有同樣的錯誤。我認爲這個錯誤有一些原因。 所以我的錯誤是「套在另一個線程DataSource不工作」的相關與

myComboBox.Invoke(new Action(() => myComboBox.DataSource = myDataSource)); 
相關問題