gpt4 book ai didi

c# - 对不同的 Windows 窗体控件使用相同的事件处理程序是否安全?

转载 作者:行者123 更新时间:2023-11-30 19:14:14 25 4
gpt4 key购买 nike

这是好的做法吗?我有 3 个 DataGridView,我想要一个允许用户通过单击列标题对数据进行排序的工具。我本可以为每个 DataGridView 的 ColumnHeaderMouseClick 事件设置一个事件处理程序,但我做了一个:

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)。这样安全吗? sender 可以是不是 DataGridView 的东西吗?

最佳答案

不仅可以,而且更好,因为它使您的代码更可重用、可维护和可扩展。

关于c# - 对不同的 Windows 窗体控件使用相同的事件处理程序是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com