Ableiten eines ListView Controls

Hallo,

ich möchte eine neue ListView entwickeln, bei der beim Rechstclick auf irgendeine Spalte, ein Kontextmenü angezeigt wird. Über dieses Kontextmenü kann man dann zusätzliche Spalten ein oder ausblenden. Eigentlich genauso wie es beim Windows Explorer der Fall ist.

Bisher sieht mein Programmieransatz wie folgt aus:

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace Patientenverwaltung.Controls
{
 public partial class ExtendedListView : ListView
 {
 ContextMenuStrip oHeaderContextMenuStrip;

 public ExtendedListView()
 {
 this.Name = "ExtendedListView";
 this.MouseClick += new MouseEventHandler(ExtendedListView\_MouseClick);

 }

 private void ExtendedListView\_MouseClick(object sender, MouseEventArgs e)
 {
 if (oHeaderContextMenuStrip != null)
 {
 if (e.Y 

Jedoch wird beim Clicken auf die ListView kein MouseClick Ereignis ausgelöst, sprich der EventHandler wird nicht ausgeführt. Woran könnte das liegen? Vielleicht hat einer von euch eine Erklärung dafür oder kennt evtl. sogar eine einfachere Lösung für dieses Problem.

Gruß
Christoph

Wenn ich mich recht entsinne, hatte ich das Problem des Rechtsclicks auch schon mit dem ListView Control.
Das Problem ist, dass .NET bereits ein ContextMenu vorsieht und somit das MouseClick Event für die rechte Maustaste nicht zuverlässig ausgelöst wird. Ich hatte dies durch Überschreiben der WndProc() abgefangen. Das Ganze sieht dann so aus (C#):

private const int WM\_CONTEXTMENU = 0x007b;

...

protected override void WndProc(ref Message m)
{
 switch(m.Msg)
 {
 case WM\_CONTEXTMENU:
 // hier kannst Du ein eigenes Event auslösen
 // MouseKoordinaten finden sich in m.LParam 
 // ( X = LoWord, y = HiWord)
 return; //nicht break, die originale WndProc() soll ausfallen
 }
 base.WndProc(ref m);
}

Auf diese Weise kannst Du ein Event auslösen (beispielsweise mit den MouseEventArgs) dass Du vom Form anfangen kannst, um ein ContextMenu anzuzeigen.

Ich hoffe das konnte Dir helfen.

Grüße,
Andreas