Управление CheckedListBox - Только проверка флажка, когда фактический флажок нажат

Я использую управление CheckedListBox в небольшом приложении, я продолжаю работать. Это - хорошее управление, но одна вещь беспокоит меня; я не могу установить свойство так, чтобы оно только проверило объект, когда я на самом деле проверяю флажок. Что лучший способ состоит в том, чтобы преодолеть это? Я думал о получении положения щелчка мышью, родственника от левой стороны флажка. Который работает частично, но если бы я нажал бы на вакуум, достаточно близко налево текущий выбранный пункт был бы все еще проверен. Какие-либо идеи относительно этого?

10
задан Kevin Gorski 20 January 2010 в 00:44
поделиться

2 ответа

Ну, это довольно безобразно, но вы можете рассчитать координаты удара мыши против прямоугольников элементов, подключаясь на CheckedListbox.Mousedown и CheckedListbox.itemCheck Как следующие

/// <summary>
/// In order to control itemcheck changes (blinds double clicking, among other things)
/// </summary>
bool AuthorizeCheck { get; set; }

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if(!AuthorizeCheck)
        e.NewValue = e.CurrentValue; //check state change was not through authorized actions
}

private void checkedListBox1_MouseDown(object sender, MouseEventArgs e)
{
    Point loc = this.checkedListBox1.PointToClient(Cursor.Position);
    for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
    {
        Rectangle rec = this.checkedListBox1.GetItemRectangle(i);
        rec.Width = 16; //checkbox itself has a default width of about 16 pixels

        if (rec.Contains(loc))
        {
            AuthorizeCheck = true;
            bool newValue = !this.checkedListBox1.GetItemChecked(i);
            this.checkedListBox1.SetItemChecked(i, newValue);//check 
            AuthorizeCheck = false;

            return;
        }
    }
}
7
ответ дан 3 December 2019 в 16:10
поделиться

Текст для флажка в CheckedListBox отображается по умолчанию, это разместить метку HTML после ввода флажков и установить атрибут метки «для» на идентификатор флажок.

Когда метка обозначает элемент, который оно «для», щелкнув на этой метке, сообщает браузеру сосредоточиться на этом элементе, который вы видите.

Два варианта - сделать свой собственный список с отдельными элементами управления флажок и текстом (не в качестве свойства Text The CheckBox, как это делает то же самое, что и для CheckboxList), если список статичен или использовать что-то вроде повторения, если Список динамичен.

0
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: