В приложении Windows Forms есть некоторые вещи, которые я хочу, чтобы различные элементы управления одного типа в разных формах всегда делали для определенных событий. Например, я хочу одним щелчком мыши на DataGridViewCell, который имеет тип TextBox и предназначен не только для чтения, чтобы автоматически войти в режим редактирования. Простой код обработчика событий, в данном случае в форме с DataGridView с именем dgvParms
, имеет вид:
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);
}
}
Я мог бы легко переместить этот метод в статический класс, скажем, CommonEvents
, а затем обработчики Load
моих индивидуальных форм назначают определение статического метода соответствующему событию CellClick DataGridViews
this.dgvParms.CellClick += CommonEvents.dgvEditOnCellClick;
Это приемлемая или хорошая практика? Или предпочтительнее хранить логику обработчика событий с кодом каждой потребляющей формы? Конечно, я мог бы сделать что-то промежуточное (но избыточное), определив локальные обработчики событий, которые затем вызывают общий метод, такой как
this.dgvParms.CellClick += (a, b) => CommonEvents.dgvEditOnCellClick(a, b);