1

datagridview の標準的なソート方法をオーバーライドしようとしています。アプリケーションがデフォルトの関数 (メソッド?) ではなく、自分の関数 (メソッド?) を使用するようにするにはどうすればよいですか? このイベントは、ユーザーが列をクリックしたときに発生する必要があります。

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

2 に答える 2

3

このトピックはあなたの要件に合っているので、あなたにとって非常に興味深いものになると思います。

一般に、要件に応じて、DataGridView でカスタムの並べ替えを行うために使用できる手法はほとんどありません。

  1. プログラムによる並べ替えを使用します。(Sort を手動で呼び出す必要があります)

  2. ColumnHeaderMouseClick で呼び出される SortCompare イベントを使用します。(バインドされた DataGridView の場合)

  3. 独自の System.Collections.IComparer を作成します。(バインドされていないデータグリッドビューに使用)

どちらもmsdn ページ hereにあります。また、どのテクニックをいつ使用できるかを説明しているこのページを見つけてください。

于 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
    }
}

注意: これは、この種の状況を処理する方法の基本的なアプローチです。このコードがケースで機能するかどうかを確認する必要があります

お役に立てれば。

于 2012-04-07T17:13:15.003 に答える