2015-04-19 2 views
-2

У меня есть список и я хочу отменить выбор первого выбранного элемента в списке, когда цикл запущен, потому что он должен обработать элемент списка после элемента. В настоящее время я использую это:Listbox deselect top item

var list = new object[listBoxTracks.SelectedItems.Count]; 
for (int i = 1; i < listBoxTracks.SelectedItems.Count; i++) 
    list[i - 1] = listBoxTracks.SelectedItems[i]; 

listBoxTracks.SelectedItems.Clear(); 
foreach (var track in list) 
    listBoxTracks.SelectedItems.Add(track); 

Я думаю/знаю, что это, вероятно, очень плохо, но я понятия не имею, что другие возможности имеются. Я пробовал вещи с selectedIndex + = 1 и т. Д., Но это, похоже, разбивает его. Если на это был дан ответ, прежде чем я прошу прощения, но я ничего не нашел в своих исследованиях:/

+0

и хотите, чтобы снять первый элемент? или отключить его, сохраняя selction –

+0

Я хочу снять/снять отметку с первого выбранного элемента. Поэтому, если я вызываю listBoxTracks.SelectedItems [0], вместо этого вызывается следующий элемент. Поэтому каждый раз, когда я вызываю код, обрабатывается следующий элемент. – Jalau

+0

Знаете ли вы, что .NET имеет как минимум 4 разных класса ListBox? Это помогает, когда вы указываете, что такое платформа графического интерфейса. –

ответ

2

Насколько я вижу, вы можете напрямую манипулировать SelectedItems. Таким образом, вы также можете удалить из него один элемент, например.

listBoxTracks.SelectedItems.Remove(listBoxTracks.SelectedItems[0]); 
+0

Я просто отменил его с помощью этого или полностью удалил с этим? Спасибо за ваш ответ :) – Jalau

+0

Поскольку вы удаляете его из коллекции SelectedItems, удаляется только выбранное состояние. Вы можете полностью удалить его из списка, удалив его из коллекции Items. – azt

+0

Кстати, был еще один ответ, который теперь удален. Пользователь предположил, что свойство SelectedItem всегда содержит первый выбранный элемент (или null, если ни один не выбран). Таким образом, вы можете использовать его вместо того, чтобы принимать 0-й элемент. В любом случае не забудьте проверить, что ничего не выбрано. – azt

0
private void checkedListBox1_SelectedValueChanged(object sender, EventArgs e) 
     { 
      checkedListBox1.SetItemChecked(checkedListBox1.SelectedIndex, true); 
     } 

     private void checkedListBox1_MouseDoubleClick(object sender, MouseEventArgs e) 
     { 
      checkedListBox1.SetItemChecked(checkedListBox1.SelectedIndex, true); 
     } 

Это будет делать это точно, хотел это для меня, а ...