覆盖表单事件

时间:2012-04-07 17:08:16

标签: c# winforms datagridview

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

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

2 个答案:

答案 0 :(得分:3)

我认为 topic 对您来说非常有趣,因为它符合您的要求。

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

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

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

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

  4. 两者都可以在msdn page here找到。 另请参阅此page解释何时可以使用哪种技术。

答案 1 :(得分:0)

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

a pesudocode

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:这是如何处理这种情况的基本方法,您必须检查此代码是否适用于您的案例。

希望这有帮助。