Домой C# Блокировка элементов списка, компонента «CheckedListBoxControl» от производителя «DevExpress».: Справочник по C#

Блокировка элементов списка, компонента «CheckedListBoxControl» от производителя «DevExpress».: Справочник по C#

748
0


      В данном статье рассмотрен пример блокировки элементов списка, компонента «CheckedListBoxControl» от производителя «DevExpress». Данный элемент управления представляет симбиоз компонентов ListBox и CheckBox. Для каждого элемента такого списка определено специальное поле CheckBox, которое можно отметить.
      Создайте проект «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» и наведите курсор на заблокированную запись. У вас появится подсказка с текстом, который вы задали. Если вы переместите курсор на не блокированную запись, то подсказка исчезнет.

Блокировка элементов списка, компонента «CheckedListBoxControl» от производителя «DevExpress».: Справочник по C#

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Google Переводчик (Google Translate) и C#: Справочник по C#

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь