Я бы этот общий подход:
Слушайте событие SelectedIndexChanged
и просматривайте каждую коллекцию SelectedIndices
.
Сохраните отдельный список всех выбранных индексов, добавляемых, которые еще не были в списке, удалив те, которые были отменены.
Отдельный список будет содержать индексы в хронологическом порядке, выбранном пользователем. Последний элемент всегда является самым последним выбранным индексом.
// 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 2008-11-21 07:50:32