Windowsフォームアプリケーションでは、同じタイプのさまざまなコントロールをさまざまなフォームで使用して、特定のイベントに常に対応させたいものがいくつかあります。たとえば、TextBox型のDataGridViewCellを1回クリックするだけで、自動的に編集モードに入るようには読み込まれません。単純なイベントハンドラのコードは、dgvParms
と呼ばれるのDataGridViewをフォーム上のこのような場合には、次のとおりです。一般的なイベントハンドラを収集するために静的クラスを使用するのはよいですか?
private void dgvParms_CellClick(object sender, DataGridViewCellEventArgs e) {
DataGridViewCell c = dgvParms[e.ColumnIndex, e.RowIndex];
if (!c.ReadOnly && c is DataGridViewTextBoxCell) {
dgvParms.CurrentCell = c;
dgvParms.BeginEdit(true);
}
}
私は簡単に私の個々の形Load
ハンドラで、その後CommonEvents
を言う、静的クラスにこのメソッドを移動し、可能性があり静的メソッド定義をそれぞれのDataGridViewのCellClickイベントに割り当てます。
this.dgvParms.CellClick += CommonEvents.dgvEditOnCellClick;
これは容認できますか、それとも良い方法ですか?または、消費するフォームのコードごとにイベントハンドラロジックを保持することが望ましいですか?もちろん、あなたがあなたのコードを変更する必要がありますが、私はもちろん、これは私には絶対に正常に見える
this.dgvParms.CellClick += (a, b) => CommonEvents.dgvEditOnCellClick(a, b);
'dGvParams!= null'が' sender as DataGridView'の割り当ての後であることを確認してください。 –
@ JasonDownこれは必須ではありません。このメソッドは、DGVを送信者引数として渡すイベントにのみ割り当てることができます。イベントが動作する方法は、このメソッドがnull送信者では呼び出されないことを意味します。 – ColinE
習慣の力...メソッドparmsが '(オブジェクト送信者、EventArgs e)'であれば、チェックを実行するだけで済みます。これは、メソッドをイベントハンドラとして委譲できることを意味します。 –