2012-10-11 34 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; 

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

助けてください
ありがとうございました。

+0

んcmbBrandで

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

修正を「動作していない別のスレッドでDataSourceを設定する」に関連しますか?また、どのようなオブジェクトタイプcmbBrandを確認することができますか? – Chris

+0

はい、エントリがあります。 'cmbProduct_SelectedIndexChanged'に' cmbBrand.SelectedIndex = 0; 'を与えていないときは、エントリを表示しています。最初はnull値を表示しないようにするため、 'cmbBrand.SelectedIndex = 0;'を追加しました。エラーを出しています。 –

答えて

5

問題は次のとおりです。

アプリケーションを起動したとき、あなたはcmbBrand内のアイテムを持っていませんが、cmbProductはのSelectedIndexChangedが発生します。 Form1.Designer.csから

削除のSelectedIndexChangedイベントの初期化:

はこれを試してみてください。 SelectedIndexChangedイベントを初期化し、XMLファイルからのデータでDataSetを移入する場合、その後

this.cmbProduct.SelectedIndexChanged += new System.EventHandler(this.cmbProduct_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

私は同じエラーがありました。私はこのエラーにはいくつかの理由があると思います。 はので、私のエラーはそれで間違いsoemエントリー持っ

myComboBox.Invoke(new Action(() => myComboBox.DataSource = myDataSource)); 
関連する問題