Как убрать пунктирную рамку в listbox C#

Пока писал программу ProSticks на win form, столкнулся с такой задачей, когда на форме выделяешь listbox то элементы при наведении фокуса обводятся по границе, а так же если фокус направлен на listbox автоматически обводиться первый элемент. Для меня это показалось не эстетичным. В wpf там все намного проще в разметке достаточно было добавить:

Но вот с формой пришлось малость повозиться.  Во первых я добавил первый компонент именно listbox, это привело к тому, что при загрузке программы на него автоматически устанавливался фокус и рисовалась эта рамка. Но от этого было не сложно избавиться, добавлением строчки кода:

Но когда я мог выделить один из элементов, к примеру первый и щелкнуть по пустой области внутри listbox, у меня наводился фокус прорисовывалась пунктирная рамка у нижнего элемента, а выделенным оставался верхний.

Вот тут мне пришлось обратить внимание на winapi и создать свойство в listbox MouseDown. И вписать в него следующий код:

Таким образом, когда мы зажимали кнопку мыши, возникало событие которое выполняло метод снятия фокуса с элемента. Теперь вы знаете как избавиться от пунктирной границы элемента в listbox. По сути это универсальный метод избавления от столь не желательной пунктирной рамки вокруг элементов.

 

Обновлено: 19.11.2017 — 14:40

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.