Ich habe eine Listview mit einigen Einzelteilen. In der ListView sind einige Gruppen definiert, einige Spalten und einige Elemente wurden hinzugefügt. Die ListView hat auch das ContextMenu gesetzt.Handhabung Context auf Listview
Auf Öffnen Ereignis des ContextMenu, ich werde überprüfen, ob das Kontextmenü auf einem ListView Element geöffnet wurde. Also, ich tat:
private void CtxMenuProcess_Opening(object sender, CancelEventArgs e)
{
ContextMenuStrip ctxMenuStrip = (ContextMenuStrip)sender;
ListViewHitTestInfo hitTestInfo = LstViewAdminApp.HitTest(LstViewAdminApp.PointToClient(Control.MousePosition));
if (hitTestInfo.Item != null) {
//....
}
}
Leider passiert der Treffer nicht.
Ich fühle, dass die Koordinaten der ctxMenuStrip die falschen sind, aber ich habe eine Menge "Varianten" ohne Erfolg versucht, und die Dokumentation von ListView.HitTest ist sehr schlecht.
Wer kann mir helfen?
Weitere Untersuchung bringt keine Lösung. Ich fange an, über die Initialisierung des ListView-Steuerelements zu verdächtigen. Hier ist die nicht Standardeigenschaften I gesetzt haben:
- Aktivierung = OneClick
- Columns = Colum [3]
- Context = ContextMenu
- Dock = Fill
- FullRowSelect = true
- Gridlines = true
- Groups = Gruppe [3]
- HideSelection = false
- LabelWrap = false
- Sortierung = aufsteigend
- View = Einzelheiten
Die 'Location' Eigenschaft ist bedeutungslos. – SLaks
Danke SLaks. Ich habe schon bemerkt, von http://stackoverflow.com/questions/3443232/get-the-point-of-click-on-a-control – Luca
Ich denke, ListView.HitTest erfordert Client-Koordinaten. Aber immer noch nicht funktioniert. – Luca