В данном статье рассмотрен пример блокировки элементов списка, компонента «CheckedListBoxControl» от производителя «DevExpress». Данный элемент управления представляет симбиоз компонентов ListBox и CheckBox. Для каждого элемента такого списка определено специальное поле CheckBox, которое можно отметить.
Создайте проект «Windows Form» в «Microsoft Visual Studio» и добавьте на форму компонент «CheckedListBoxControl».
Выполните двойной клик по свободному пространству главной формы. Вы перейдете в редактор кода с автоматически созданным методом «Form1_Load».
Добавьте в тело данного метода приведенный ниже код, заполнения элемента управления «checkedListBoxControl1» тестовыми данными.
Перейдите в события данного элемента управления, нажав в верхней части окна свойств, на значок молнии и найдите событие «GetItemEnabled». Выполните по нему двойной клик левой клавишей мыши.
Вы перейдете в редактор кода с автоматически созданным методом «checkedListBoxControl1_GetItemEnabled», добавьте приведенный ниже код блокировки четных записей списка.
Вы можете так же вывести картинку напротив заблокированных пунктов. Для этого перейдите в свойства вашего проекта и выберете раздел «Ресурсы». В верхней части формы данного окна вы увидите кнопку «Добавить ресурс» с выпадающим списком, нажмите на нее и выберете пункт «Добавить существующий файл…».
У вас откроется окно «Добавить существующий файл к ресурсам». Выберете нужную вам картинку и нажмите на кнопку «Открыть». В ресурсы вашего проекта будет добавлено выбранное вами изображение.
Перейдите в события элемента управления «checkedListBoxControl1» и найдите событие «DrawItem». Выполните по нему двойной клик левой клавишей мыши. Вы перейдете в автоматически созданный метод «checkedListBoxControl1_DrawItem». Вставьте в него приведенный ниже листинг.
Так же можно добавить подсказку на заблокированные элементы. Для этого добавьте на главную форму вашего проекта из панели элементов, элемент управления «ToolTipController».
Перейдите в события элемента управления «checkedListBoxControl1» и найдите событие «MouseMove». Выполните по нему двойной клик левой клавишей мыши. Вы перейдете в автоматически созданный метод «checkedListBoxControl1_MouseMove». Данное событие возникает каждый раз, когда вы наводите курсор на один из элементов списка. Вставьте в тело данного метода приведенный ниже код.
Создайте проект «Windows Form» в «Microsoft Visual Studio» и добавьте на форму компонент «CheckedListBoxControl».
Выполните двойной клик по свободному пространству главной формы. Вы перейдете в редактор кода с автоматически созданным методом «Form1_Load».
Добавьте в тело данного метода приведенный ниже код, заполнения элемента управления «checkedListBoxControl1» тестовыми данными.
//Заполняем checkedListBoxControl1 //тестовыми данными for (int i = 0; i == 10; i++ ) checkedListBoxControl1.Items.Add(i);Перейдите в конструктор главной формы и выберете элемент управления «checkedListBoxControl1». Сделайте по нему клик правой клавиши мыши и выберете из открывшегося контекстного меню, пункт «Свойства».
Перейдите в события данного элемента управления, нажав в верхней части окна свойств, на значок молнии и найдите событие «GetItemEnabled». Выполните по нему двойной клик левой клавишей мыши.
Вы перейдете в редактор кода с автоматически созданным методом «checkedListBoxControl1_GetItemEnabled», добавьте приведенный ниже код блокировки четных записей списка.
DevExpress.XtraEditors.CheckedListBoxControl control = sender as DevExpress.XtraEditors.CheckedListBoxControl; if ((e.Index % 2) == 0) { e.Enabled = false; } else e.Enabled = true;Запустите ваш проект, нажав на клавишу «F5». Вы увидите, что все четные элементы списка будут заблокированы.
Вы можете так же вывести картинку напротив заблокированных пунктов. Для этого перейдите в свойства вашего проекта и выберете раздел «Ресурсы». В верхней части формы данного окна вы увидите кнопку «Добавить ресурс» с выпадающим списком, нажмите на нее и выберете пункт «Добавить существующий файл…».
У вас откроется окно «Добавить существующий файл к ресурсам». Выберете нужную вам картинку и нажмите на кнопку «Открыть». В ресурсы вашего проекта будет добавлено выбранное вами изображение.
Перейдите в события элемента управления «checkedListBoxControl1» и найдите событие «DrawItem». Выполните по нему двойной клик левой клавишей мыши. Вы перейдете в автоматически созданный метод «checkedListBoxControl1_DrawItem». Вставьте в него приведенный ниже листинг.
if ((e.Index % 2) == 0) { DevExpress.XtraEditors.ViewInfo.CheckedListBoxViewInfo cInfo = (DevExpress.XtraEditors.ViewInfo.CheckedListBoxViewInfo)checkedListBoxControl1.GetViewInfo(); Size checkBoxSize = cInfo.CheckMarkSize; //Выводим изображение добавленное в ресурсы проекта e.Graphics.DrawImage(checkedListBoxControl1_ItemEnabled.Properties.Resources.alert, new Rectangle(e.Bounds.X, e.Bounds.Y, checkBoxSize.Width, checkBoxSize.Height)); //Изменяем шрифт e.Graphics.DrawString(e.Item.ToString(), e.Appearance.Font = new Font(e.Appearance.Font.FontFamily, e.Appearance.Font.Size, FontStyle.Strikeout), e.Cache.GetSolidBrush(Color.Silver), new Point(checkBoxSize.Width + e.Bounds.X, e.Bounds.Y)); e.Handled = true; }Запустите ваш проект, нажав на клавишу «F5». Вы увидите, что все записи с четными номерами будут заблокированы и рядом с ними будет отображаться изображение которое вы добавили в ресурсы вашего проекта.
Так же можно добавить подсказку на заблокированные элементы. Для этого добавьте на главную форму вашего проекта из панели элементов, элемент управления «ToolTipController».
Перейдите в события элемента управления «checkedListBoxControl1» и найдите событие «MouseMove». Выполните по нему двойной клик левой клавишей мыши. Вы перейдете в автоматически созданный метод «checkedListBoxControl1_MouseMove». Данное событие возникает каждый раз, когда вы наводите курсор на один из элементов списка. Вставьте в тело данного метода приведенный ниже код.
DevExpress.XtraEditors.CheckedListBoxControl checkedListBoxControl = sender as DevExpress.XtraEditors.CheckedListBoxControl; int index = checkedListBoxControl.IndexFromPoint(new Point(e.X, e.Y)); if (index != -1) { if ((index % 2) == 0) { string item = checkedListBoxControl.GetItem(index) as string; toolTipController1.ShowHint("Пункт является четным в списке!", checkedListBoxControl.PointToScreen(new Point(e.X, e.Y))); } else toolTipController1.HideHint(); } else { toolTipController1.HideHint(); }Выполните те же действия для события «MouseLeave», которое возникает, когда указатель мыши покидает границы элемента управления. Добавьте приведенный ниже код скрытия подсказки.
toolTipController1.HideHint();Запустите ваш проект, нажав на клавишу «F5» и наведите курсор на заблокированную запись. У вас появится подсказка с текстом, который вы задали. Если вы переместите курсор на не блокированную запись, то подсказка исчезнет.
Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!