如何获取.Net Forms多选ListBox中的最后一个选定项?显然,如果我在列表框中选择一个项目,然后选择另一个项目,则所选项目是第一个项目.
我想获得我选择/取消选择的最后一个元素.
我会采用这种一般方法:
聆听SelectedIndexChanged
事件并SelectedIndices
每次扫描整个集合.
保留所有选定索引的单独列表,附加未列在列表中的索引,删除已取消选择的索引.
单独的列表将按照用户选择的时间顺序包含索引.最后一个元素始终是最近选择的索引.
// for the sake of the example, I defined a single ListList listBox1_selection = new List (); private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { TrackSelectionChange((ListBox)sender, listBox1_selection); } private void TrackSelectionChange(ListBox lb, List selection) { ListBox.SelectedIndexCollection sic = lb.SelectedIndices; foreach (int index in sic) if (!selection.Contains(index)) selection.Add(index); foreach (int index in new List (selection)) if (!sic.Contains(index)) selection.Remove(index); }
不确定我理解这个问题,但最后选择的项目将是SelectedItems数组中的最后一个,所以这样的东西应该工作:
ListItem i = list.SelectedItems[list.SelectedItems.Length-1];