C # ListView с CheckBoxes, автоматический флажок установлен, когда несколько выделенных строк - PullRequest
7 голосов
/ 07 января 2010

Я использую элемент управления ListView с включенным многострочным и полноцветным выбором.Когда я выбираю несколько строк одновременно, некоторые из моих строк волшебным образом становятся отмеченными.Это происходит при перетаскивании мыши, а также при выборе одного и сдвиге при нажатии другого.

См. Изображение, описывающее проблему, здесь: alt text

Что происходит в грейпфруте?Кто-нибудь? * * 1006

Ответы [ 3 ]

7 голосов
/ 07 марта 2012

К сожалению, в классе ListView есть ошибки, это одна из них. Следующий код является исправлением, которое сработало для меня.

Редактировать: Извините, это работает не совсем правильно, хотя и предотвращает ошибку, отображаемую в вашем вопросе. Это предотвращает выбор нескольких элементов, а затем проверяет их, установив флажок.

void SetupListView()
{
    listView.ItemCheck += new ItemCheckEventHandler(listView_ItemCheck);
    listView.MouseDown += new MouseEventHandler(listView_MouseDown);
    listView.MouseUp += new MouseEventHandler(listView_MouseUp);
    listView.MouseLeave += new EventHandler(listView_MouseLeave);
}

bool mouseDown = false;
void listView_MouseLeave(object sender, EventArgs e)
{
    mouseDown = false;
}

void listView_MouseUp(object sender, MouseEventArgs e)
{
    mouseDown = false;
}

void listView_MouseDown(object sender, MouseEventArgs e)
{
    mouseDown = true;
}

void listView_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if(mouseDown)
    {
        e.NewValue = e.CurrentValue;
    }
}
4 голосов
/ 26 марта 2010

Я ответил на это на другом форуме:

http://www.codeproject.com/Messages/3417741/Re-how-to-disable-multi-select-of-checkbox-in-list.aspx

HTH - hground

0 голосов
/ 28 декабря 2017

это простой вопрос просто попробуйте это

private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (ModifierKeys == Keys.Control || ModifierKeys == Keys.Shift)
    {
        e.NewValue = e.CurrentValue;
    }
}
...