2011-01-28 27 views
1

標準DataGridViewがあり、最後の列はDataGridViewComboBoxColumnです。 その列の選択されたインデックスが変更されたときにイベントが発生し、そのデータをdbに保存するようにイベントを追加したいとします。DataGridViewComboBoxColumnをOnChangeイベントにバインドする方法(C#)

私は時間かそこらのためにこれに苦しんだし、これをトリガーするすべてのイベントを見つけることができませんでした...

任意の助けいただければ幸いです!あなたはそのイベントに今そう

private void dg_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (dg.CurrentCell.ColumnIndex == [yourcolumnindex]) 
    { 
    ComboBox cmbox = e.Control as ComboBox; 
    cmbox.SelectedValueChanged -= new EventHandler(cmbox_SelectedValueChanged); 
    cmbox.SelectedValueChanged += new EventHandler(cmbox_SelectedValueChanged); 
    } 
} 

、これらの行に何か コンボボックスが編集コントロールで試すことができます

+0

あなたは毎回ユーザーが最後の列のコンボボックス内の項目を変更する意味するか、保存したいですその行のデータをデータベースに送りますか?もしそうなら、それは良い考えではないと私は思う。 – JPReddy

答えて

6

DataGridViewEditingControlShowingイベントでは、コンボボックスSelectedIndexChangedイベントにメソッドを追加します。例えば

:あなたがやりたいことができ、以下の方法で

private void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (DGV.CurrentCell.ColumnIndex == comboColumnIndex && e.Control is ComboBox) 
    { 
    ComboBox comboBox = e.Control as ComboBox; 
    comboBox.SelectedIndexChanged += LastColumnComboSelectionChanged; 
    } 
} 

:今すぐ

private void LastColumnComboSelectionChanged(object sender, EventArgs e) 
{ 
    // Do saving work here 
} 
+0

そのトリックをした! TY! – Andrej

+0

この方法を使用すると、このイベントに複数の登録が行われることに注意してください。 EditingControlが表示されるたびに、イベントに再登録します。 – itsho

2

あなたは自分のもの を行うことができます。しかし、それはすべての屈折率変化のためにあなたが打つことになることが必要とされますデータベース?

関連する問題