2016-11-11 20 views
0

現在のコードが使用しています...別のメソッド内からCellValueChangedイベントを呼び出す方法

1は、その後マウス...配列が1,2である、他の場所をクリックすべてが、すべての良いdataGridView1_CellValueChanged(){ //do some stuff }
2 = dataGridView1_RowLeave(){ //do some other stuff }

ユーザーがセルの値を変更した場合です= 。 IはRowLeave(前に発射するcellValueChangedを必要

しかし、ユーザがセルの値を変更する場合、Enterキーを押す、配列は2であり、1

)予め

おかげ

/////////////////////ここ

は、要求されたコード

dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
newRecord = listOfRecords.ElementAt(dataGridView1.CurrentCell.RowIndex); 
_recordsHaveChanged = true; 
} 

dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e) 
{ 
if (_recordsHaveChanged) 
{ 
DialogResult dialogResult = MessageBox.Show("yes or no", "",  MessageBoxButtons.YesNo); 

if (dialogResult == DialogResult.Yes) 
{ 
UpdateChanges.PerformClick(); 
_recordsHaveChanged = false; 
DisplayAllDataOnTheForm(); 
} 
else if (dialogResult == DialogResult.No) 
{ 
//do nothing , return to form 
} 
} 
} 
+0

'{// do some stuff}'コードをそれ自身のメソッドに入れ、2か所から呼び出します。手動でイベントを呼び出さないでください。 – Plutonix

+1

( 'RowLeave'イベントが発生したという事実に基づいて)' CellValueChanged'を起動する必要があります。 'CellValueChanged'イベントハンドラのコードや、' CellValueChanged'イベントが発生したことを確認する方法を教えてください。 – Fabio

+0

@ファビオ、私は間違っていた。 CellValueChangedは実行されますが、それはRowLeaveの後に実行されます。私はRowLeaveの前に発射する必要があります。 – greg

答えて

0
です

dataGridView1_KeyPressイベントの使用を試みます。このイベントにも{ //do some stuff }コードを置きます。

さらに、{ //do some stuff }で別のメソッドを作成し、それをdataGridView1_KeyPressイベントとdataGridView1_CellValueChangedイベントの両方から呼び出すこともできます。

関連する問題