2017-07-07 4 views
0

Hy!ObjectListView Objekt mit Kontextmenü abrufen

Ich möchte eine ObjectListView erstellen, wo Sie Elemente mit einem ContextMenu löschen können.

Also ich normalerweise zu löschen, indem OLV.SelectedIndex, und dann löschen von der Liste OLV basiert auf, und setzen Sie die OLV-Objekte. Dann erkannte ich, wenn ich den OLV sortiere, lösche ein Element, löscht es ein anderes Element, da der ausgewählte Elementindex nicht gleich dem Index in der Liste ist.

Mit OLV CellRightClick-Ereignis kann ich das Objekt hinter dem angeklickt Element (e.Model), aber ich weiß nicht, wie Sie es an den ContextMenu click Event-Handler übergeben.

Themen ist eine Liste.

private void subjectListView_CellRightClick(object sender, BrightIdeasSoftware.CellRightClickEventArgs e) 
{ 
if (subjectsListView.SelectedIndex != -1) 
{ 
ContextMenu cm = new ContextMenu(); 
cm.MenuItems.Add("Delete", new EventHandler(DeleteItem)); 
subjectsListView.ContextMenu = cm; 
} 
} 

void DeleteItem(object sender, EventArgs e) 
{ 
//get the Subject object, which was clicked on 
Subjects.RemoveAt(subjectsListView.SelectedIndex); 
subjectsListView.SetObjects(Subjects); 
} 

Also im Grunde möchte ich das Objekt (der Index) erhalten, wenn die Kontextmenüs „Löschen“ Element geklickt wird. Außerdem habe ich das Gefühl, dass es einen einfacheren Weg gibt, dies zu tun.

Danke für die Antwort.

Antwort

0

würde ich vergeben nur eine angemessene Context vom Designer zum ObjectListView.ContextMenuStrip Eigenschaft und dann das Klicken des entsprechenden „Löschen“ wie folgt klicken handhaben:

private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { 
     if (objectListView1.SelectedObject != null) { 
      objectListView1.RemoveObject(objectListView1.SelectedObject); 
     } 
    } 

Oder gibt es eine Anforderung mir fehlt von deiner Frage?

+0

Nun "RemoveObject" entfernt nur aus dem OLV, und mein Problem ist, dass es nicht mit der Liste synchronisiert OLV Daten aus liest. Auch wenn Benutzer den OLV sortiert, sortiert die Liste nicht, so dass es in einer anderen Sequenz, so dass durch OLV ausgewählten Index erhalten ein anderes Objekt. – IAmFry

+0

Können Sie das SelectedObject nicht einfach aus der Quellenliste entfernen? Die Objektreferenz sollte gleich sein. –

+0

Ja, Sie haben Recht, hatten keine Zeit, um es gestern zu überdenken, wusste auch nicht über diese Methode, und. SelectedObject-Eigenschaft, danke – IAmFry