2009-08-24 7 views
2

(いずれかがある場合、最後の列の右側にある領域)ListView.ColumnClickが列の外側にあるヘッダ領域にクリックに対して発射していないようリストビューcolumnclick外側列

は、いくつかの簡単ありますクリックを検出する方法は?

+1

私は値NonclickableがHeaderStyleプロパティに設定されていると思います。 – adatapost

+0

いいえ、デフォルトはクリック可能です。再び、これは右側の「残りの」灰色の領域ではなく、実際の列ヘッダーにのみ影響するようです。 – second

答えて

2

リストビューヘッダーは、リストビューコントロール内の独立したエンティティ/ウィンドウです。残念なことに、listviewはマウスイベントを提供せず、ヘッダー上のアクティビティをキャプチャすることができます(明らかなイベントを除く)。リストビューコントロールの拡張バージョンを作成し、そのウィンドウにアクセスしてそれらのイベントを利用可能にするために、いくつかの低レベルのアンマネージドメソッドを使用する必要があります。

あなたはここに開始することができます:http://www.codeproject.com/KB/list/HeaderRightClick.aspx

1

低レベルでも、これは簡単ではありません。特定の記事は、ユーザーがヘッダーをクリックしたときに送信されたではなく、であるMenuOpeningイベントに依存しています。実際、ListViewは、ヘッダーが列の外側でクリックされたときに通知を受け取りません。

ObjectListView(.NET WinForms ListViewのオープンソースラッパー)は、すでに必要なすべての配管を備えており、簡単に変更できます。ファイルHeaderControl.csで

、WndProcメソッド()メソッドを探し、そこにあるcase文にこれを追加します。

case 0x0201: //WM_LBUTTONDOWN 
    if (this.ColumnIndexUnderCursor == -1) { 
     System.Diagnostics.Debug.WriteLine("header click on no column"); 
    }; 
    break; 
+0

コンテキストメニューは私が必要としていたものなので、Fabianが言及したリンクがトリックをした – second

関連する問題