How to get the last selected item in a .Net Forms multiselect ListBox? Apparently if I select an item in the listbox and then select another 10 the selected item is the first one.
I would like to obtain the last element that I selected/deselected.
-
Not sure I understand the question, but the last selected item will be the last in the SelectedItems array, so something like this should work:
ListItem i = list.SelectedItems[list.SelectedItems.Length-1]; -
I would take this general approach:
Listen for the
SelectedIndexChangedevent and scan through theSelectedIndicescollection every time.Keep a separate list of all selected indices, appending ones that have not been in the list, removing those that have been de-selected.
The separate list will contain the indexes in the chronological order they were selected by the user. The last element always is the most recently selected index.
// for the sake of the example, I defined a single List<int> List<int> listBox1_selection = new List<int>(); private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { TrackSelectionChange((ListBox)sender, listBox1_selection); } private void TrackSelectionChange(ListBox lb, List<int> selection) { ListBox.SelectedIndexCollection sic = lb.SelectedIndices; foreach (int index in sic) if (!selection.Contains(index)) selection.Add(index); foreach (int index in new List<int>(selection)) if (!sic.Contains(index)) selection.Remove(index); }Germstorm : Thank you very much, you have both have been helpful -
Try this
private void listBox1_MouseUp(object sender, MouseEventArgs e) { int jj = listBox1.IndexFromPoint(e.X, e.Y); object Test = listBox1.Items[jj]; object LatestItemSelected; if(listBox1.SelectedItems.Contains(Test)) LatestItemSelected = Test; }Obviously LatestItemSelected is redundant and is there to emphasize that you have found your item.
0 comments:
Post a Comment