Как я могу сохранить AC # Listview Control с флажками «Проверка» при выборе строки? - PullRequest
6 голосов
/ 07 июня 2011

Среда

  • Windows XP x32 Visual Studio 2005 Standard Edition
  • Honeywell Dolphin 9500 под управлением Windows Mobile 2003 (Pocket PC 2003) Со встроенным сканером штрих-кода и черно-белой камерой Использование их SDKрасположен здесь .
  • .NET Compact Framework 1.0 SP3 и .NET Framework 1.1
  • Использование VC #

Цель

У меня есть элемент управления ListView с CheckBoxes = true и View = Details в форме, но я не хочу, чтобы флажки «проверялись» пользователем.Я использую его для отображения статуса завершения записи.Однако я хочу использовать функцию обработчика событий, чтобы установить флажок с помощью кода (т. Е. При завершении записи: lvMeters_ItemCheck(null, null);).

Проблема

Я отключил проверку самого флажка (Я думаю, сенсорный экран не очень точный на этом устройстве).Однако при выборе строки (у меня есть FullRowSelect = true), элемент управления часто проверяет флажок, и обработчик событий, кажется, не вызывается.

Вещи, которые я пробовал

Iпопытался в основном отменить действие в обработчике события:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (sender is ListView)
    {
        if (e.CurrentValue == CheckState.Checked)
            lvMeters.Items[e.Index].Checked = true;
        else
            lvMeters.Items[e.Index].Checked = false;
    }
    else if (e.CurrentValue == CheckState.Checked)
        lvMeters.Items[e.Index].Checked = false;
    else
        lvMeters.Items[e.Index].Checked = true;
}

Проблема в том, что указанный выше обработчик не вызывается при выборе представления списка, и при этом обработчик события SelectedItemChanged не вызывает этот обработчик события, но он все еще проверяеткоробка на выбор.Он вызывается при установке флажка.

Нужна дополнительная информация?

Спросите, и я сделаю все возможное!

Я новичок

Поэтому, пожалуйста, не стесняйтесь сказать мне, что я делаю это совершенно неправильно и должен все делать по-другому.

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Вздох ... Мне как-то удалось убрать обработчик событий из элемента управления при путанице с дизайнером. В какой-то момент я проверил, и он все еще был там, но в тот момент у меня действительно была проблема с логикой / кодом.

Спасибо за ваши ответы: /

0 голосов
/ 07 июня 2011

Я не знаком с ограничениями ListView на компактной платформе, но на стандартной платформе вы можете использовать свойство TreeNode.StateImageIndex . В непроверенных / проверенных состояниях фактически используются небольшие изображения, встроенные в стандартный код winforms (если я правильно помню, это индексы 1 и 2). Так, например, если вы сделаете это:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
    e.Item.StateImageIndex = 3;
}

Это изменит маленький значок и установит его в ничто. Вы также можете использовать ListView ImageList.

...