1

我正在尝试覆盖 datagridview 的标准排序方法。如何让应用程序使用我的函数(方法?)而不是默认函数?当用户单击列时应触发此事件。

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    //Sort stuff.
}
4

2 回答 2

3

我认为这个主题对你来说会很有趣,因为它符合你的要求。

通常,您可以使用几种技术在 DataGridView 中进行自定义排序,具体取决于您的要求。

  1. 使用程序排序。(您需要手动调用 Sort)

  2. 使用 SortCompare 事件,该事件将在 ColumnHeaderMouseClick 上调用。(用于绑定 DataGridView)

  3. 创建您自己的 System.Collections.IComparer。(用于未绑定的datagridview)

两者都可以在msdn 页面找到。还请找到此页面,解释何时可以使用哪种技术。

于 2012-04-07T17:50:51.727 回答
0

您不能覆盖事件,因为在实际控制方法执行引发事件。为了能够在您需要扩展控制并覆盖其中的函数之前执行某些操作,如下所示:DataGrid

伪代码

public class MyDataGrid : DataGridView
{
    public override void ColumnHeaderMouseClick(...)
    {
       //insert here your code and comment last line, so base class will not call it's own implementation

       base.ColumnHeaderMouseClick(...); //after execution of this, the event is reaised
    }
}

Riminder:这是如何处理这种情况的基本方法,您必须检查此代码是否适用于您的情况。

希望这可以帮助。

于 2012-04-07T17:13:15.003 回答