2012-01-20 12 views
2

C#、VS2010。C#ComboBox SelectedValueフォーカスがリセットされるとリセットされます。

private void FillCombo() 
{ 
    var data = from c in _ctx.Categories 
       select c; 
    categoryBindingSource.DataSource = data.ToList(); 
    cbxCategory.DataSource = categoryBindingSource; 
    cbxCategory.DisplayMember = "Name"; 
    cbxCategory.ValueMember = "CategoryId"; 
    if (_dbOperation == Helper.DbOperation.Insert) 
    { 
     cbxCategory.SelectedIndex = -1; 
    } 
} 

cbxCategory.DataBindings.Add("SelectedValue", bindingSource, "CategoryId"); 

私はコンボボックスから項目を選択すると、コンボボックスがフォーカスを失ったとき、それはresettedます。 なぜですか?解決策は何ですか? NB。 Productテーブルに接続されています。おかげさまで

+0

はFalseを – Nalaka526

+0

に「cbxCategory」「AutoPostBackの」プロパティは、それがウェブで設定してみてください?またはWindows FOrms? –

+0

'SelectedIndex(またはValue)Changed'イベントまたは' Leave'イベントにコードが添付されていますか? – Strillo

答えて

2

私はこの条件が満足され、コンボボックスは、このメソッドが呼び出されているすべての時間の後に初期値にリセットされますことを推測してい_dbOperation == Helper.DbOperation.Insert

ための条件値を確認してください。

+0

いいえ、このブロックでもコメントは残っていますが、問題はそのまま残ります。私がやった – user1104916

+0

回避策は次のとおりです。 – user1104916

+1

無効cbxCategory_SelectedValueChanged(オブジェクト送信者、EventArgsの電子) { 場合(!_isFormLoading) { _product.CategoryId =(int型)cbxCategory.SelectedValue。 } } – user1104916

0

あなたがそれを使用する場合、それはあなたがこのような行を探し、ダブルDataBindingラインに気づかなかったということができ、UIForm.Designer.csファイルで確認してください:

// Master->Details ::= Category->Products 

// 
// categoryIdComboBox 
// 

// 1. 
// this.categoryIdComboBox.DataBindings.Add("SelectedValue", this.productBindingSource, "CategoryId", true); 
// 2. 
this.categoryIdComboBox.DataBindings.Add("SelectedItem", this.productBindingSource, "Category", true); 
// 3. 
// this.categoryIdComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.productBindingSource, "CategoryId", true)); 
// 4. 
// this.categoryIdComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedItem", this.productBindingSource, "Category", true)); 

最初に私は3と4を​​持っていましたあなたのような問題を抱えていました。 私は1行だけコメントを外してしまった時、それは目を覚ましましたが、私は検証側で問題がありました。

私のための解決策は、2行だけをコメント解除することでした。

多分4行だけで動作します。それバインドリサイズのために

0

この方法(強く型付けされたため)

comboBoxFollowedBy.DataBindings.Add("SelectedValue", bindingSource1, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged); 
関連する問題