Я использую управление CheckedListBox в небольшом приложении, я продолжаю работать. Это - хорошее управление, но одна вещь беспокоит меня; я не могу установить свойство так, чтобы оно только проверило объект, когда я на самом деле проверяю флажок. Что лучший способ состоит в том, чтобы преодолеть это? Я думал о получении положения щелчка мышью, родственника от левой стороны флажка. Который работает частично, но если бы я нажал бы на вакуум, достаточно близко налево текущий выбранный пункт был бы все еще проверен. Какие-либо идеи относительно этого?
Ну, это довольно безобразно, но вы можете рассчитать координаты удара мыши против прямоугольников элементов, подключаясь на 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;
}
}
}
Текст для флажка в CheckedListBox отображается по умолчанию, это разместить метку HTML после ввода флажков и установить атрибут метки «для» на идентификатор флажок.
Когда метка обозначает элемент, который оно «для», щелкнув на этой метке, сообщает браузеру сосредоточиться на этом элементе, который вы видите.
Два варианта - сделать свой собственный список с отдельными элементами управления флажок и текстом (не в качестве свойства Text The CheckBox, как это делает то же самое, что и для CheckboxList), если список статичен или использовать что-то вроде повторения, если Список динамичен.