0
我想創建一個ObjectListView,在這裏你可以用ContextMenu刪除項目。
基本上我曾經通過獲取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」項目時獲取對象(而不是索引)。 另外,我覺得有一個更簡單的方法來做到這一點。
感謝您的回答。
那麼'RemoveObject'只能從OLV中刪除,而我的問題是它沒有與列表中的OLV同步讀取數據。 另外,當用戶對OLV進行排序時,它使用的列表不會排序,所以它在另一個序列中,因此OLV選擇的索引獲取另一個對象。 – IAmFry
難道你不能從源列表中移除SelectedObject嗎?對象引用應該是相同的。 –
是的,你是對的,沒有時間想想昨天,也不知道這個方法,和.SelectedObject屬性,謝謝 – IAmFry