Пишемо свій listbox, програмування на c #

Платформа .NET Framework пропонує досить великий вибір елементів управління. Але іноді розробнику буває недостатньо пропонованого набору. Благо, .NET дозволяє перенастроювати елементи під себе. Цим ми і займемося зараз. Створимо свій ListBox. елементи якого будуть у вигляді кнопок.

Приступимо.
Створимо в Visual Studio нове Windows Forms додаток. Після цього в дерево проектів додаємо файл з класом ButtonListBox:

Як видно з коду, свій клас ми успадкували від класу ListBox і встановили модифікатор sealed, оскільки цей клас ми не будемо проектувати як батька для інших класів.

Оголосимо додаткові змінні:

Властивість DrawMode ми встановили OwnerDrawVariable для того, щоб можна було самим малювати на компоненті.

При спадкуванні нашого класу від ListBox ми отримали полотно для малювання. Нам потрібно буде перевантажити три методи:

  • OnDrawItem - викликається при промальовуванні кожного елемента списку
  • OnSizeChanged - при зміні розміру компонента
  • OnMeasureItem - при вимірюванні висоти і ширини елемента

Почнемо з самого великого і складного методу:

Залишилося два небольшх методу:

На цьому Написане нашого ListBox закінчено. Отса його застосувати. Зверніть увагу, на панелі ToolBox з'явився наш елемент. Можете безпосередньо перетягнути його на форму або ж прописати його вручну.

Пишемо свій listbox, програмування на c #

У підсумку отримуємо інше відображення звичного елементу управління.

Пишемо свій listbox, програмування на c #