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













Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!