Est-ce une bonne pratique? J'ai 3 DataGridView et je veux avoir une facilité qui permet à un utilisateur de trier les données en cliquant sur un en-tête de colonne. Je pourrais avoir eu un gestionnaire d'événements pour l'événement ColumnHeaderMouseClick pour chacun de ces DataGridView, mais qu'au contraire je fait un:Est-il prudent d'utiliser le même gestionnaire d'événements pour différents contrôles Windows Forms?
private void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
SortDataGridView((sender as DataGridView), e.ColumnIndex);
}
SortDataGridView ressemble à ceci:
/// <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;
}
}
Chaque événement ColumnHeaderMouseClick du DataGridView accroché à ce gestionnaire. Cela implique que pour savoir lequel a soulevé l'événement lors de l'exécution, je dois dire (expéditeur comme DataGridView). Est-ce sûr? L'expéditeur pourrait-il être quelque chose qui n'est pas un DataGridView?
Vous pouvez, mais le paramètre de l'expéditeur est pas vraiment fiable (pas de type sécurité, ...). En outre, utilisez un cast et non un comme parce que vous attendez un DataGridView et rien d'autre. – Guillaume