ObjectListView 使用上下文菜单获取对象

ObjectListView get object with contextmenu

嗨!

我想创建一个 ObjectListView,您可以在其中使用上下文菜单删除项目。

所以基本上我是通过获取OLV.SelectedIndex来删除它,然后从OLV基于的列表中删除,并重新设置OLV对象。 然后我意识到,如果我对OLV进行排序,然后删除一个项目,它会删除另一个项目,因为选择的项目索引不等于列表中的索引。

通过 OLV CellRightClick 事件,我可以获得被点击项目后面的对象 (e.Model),但我不知道如何将它传递给 ContextMenu 点击事件处理程序。

主题是一个列表。

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);
}

所以基本上我想在单击 ContextMenus "Delete" 项时获取对象(而不是索引)。 另外,我觉得有一种更简单的方法可以做到这一点。

感谢您的回答。

我只是将设计器中的一个适当的 ContextMenuStrip 分配给 ObjectListView.ContextMenuStrip 属性,然后像这样处理相应 "Delete" 点击的点击:

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

或者您的问题中是否有我遗漏的要求?