Это хорошая практика? У меня есть 3 DataGridView, и я хочу иметь средство, позволяющее пользователю сортировать данные, щелкая заголовок столбца. У меня мог бы быть обработчик события ColumnHeaderMouseClick для каждого из этих DataGridView, но вместо этого я сделал один:
private void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
SortDataGridView((sender as DataGridView), e.ColumnIndex);
}
SortDataGridView выглядит так:
/// <summary>
/// Sorts a given DataGridView by a column given by its columnIndex.
/// Default sort (if it isn't currently sorted) is Ascending. If it's
/// already sorted Ascending, change it to Descending. If it is Descending,
/// change it to Ascending.
/// </summary>
/// <param name="dataGridViewToSort">The DataGridViewToSort</param>
/// <param name="columnIndexToSortBy">The index of the column which we want to sort by in the DataGridView.</param>
private void SortDataGridView(DataGridView dataGridViewToSort, int columnIndexToSortBy)
{
switch (dataGridViewToSort.SortOrder)
{
case SortOrder.Ascending:
dataGridViewToSort.Sort(dataGridViewToSort.Columns[columnIndexToSortBy], ListSortDirection.Descending);
break;
case SortOrder.Descending:
dataGridViewToSort.Sort(dataGridViewToSort.Columns[columnIndexToSortBy], ListSortDirection.Ascending);
break;
case SortOrder.None:
dataGridViewToSort.Sort(dataGridViewToSort.Columns[columnIndexToSortBy], ListSortDirection.Ascending);
break;
default:
break;
}
}
Каждое событие DataGridView ColumnHeaderMouseClick подключается к этому обработчику. Это означает, что для того, чтобы понять, какой из них вызвал событие во время выполнения, я должен сказать (отправитель как DataGridView). Это безопасно? Может ли отправитель когда-либо быть чем-то, кроме DataGridView?