2016-04-29 3 views
1

Я пытаюсь установить все элементы в ListView, как выбрано, используяC# ListView SelectAll выбора цвета

foreach (ListViewItem item in this.m_lvFiles.Items) 
{ 
    item.Selected = true; 
} 

и это работает. Однако список выглядит как Select All, programatically (цвет фона всех элементов белый). Если я выбираю элементы вручную, цвет фона синий, как на втором изображении (Select All, manually).

HideSelection=False, FullRowSelection=True, MultiSelect=True. 

Вопрос: есть ли способ принести программно выбранные элементы, например, если они были выбраны вручную?

Или есть ли ошибка в ListView?

ответ

1

В зависимости от того, где находится фокус для вашего приложения, выбор может не отображаться как «синий». Установка фокуса обратно к просмотру списка после выбора каждого элемента сделает каждый элемент фон «синего»:

m_lvFiles.Focus(); 

Предполагая, что это приложение выиграть формы ...

+0

Спасибо denvercoder9, это приложение для форм win, но просто вызов Focus(), похоже, не помогает (я бы не спросил об этом иначе). –

1

Там есть связанный с этим вопрос о том, чтобы может помочь вам:

Here

public static void SetItemState(ListView list, int itemIndex, int mask, int value) { 
    LVITEM lvItem = new LVITEM(); 
    lvItem.stateMask = mask; 
    lvItem.state = value; 
    SendMessageLVItem(list.Handle, LVM_SETITEMSTATE, itemIndex, ref lvItem); 
} 

Я надеюсь, что это помогает вам

+0

Спасибо Nestoraj, можете ли вы указать, как использовать эту функцию? Какие значения должны иметь «маска» и «значение»? Лучший фрагмент кода. –

Смежные вопросы