これは良い方法ですか? 私は3つのDataGridViewを持っており、ユーザーが列ヘッダーをクリックしてデータを並べ替えることができる機能が必要です。私はこれらのDataGridViewのごとにColumnHeaderMouseClickイベントのイベントハンドラを持っていた可能性があり、代わりに私は1つを作った:異なるWindowsフォームコントロールに対して同じイベントハンドラを使用することは安全ですか?
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ではないものになることはありますか?
に従います。 また、キャストを使用して、DataGridViewとそれ以外のものは期待しないので、asを使用しないでください。 – Guillaume