C# кастомное отображение элементов в CheckedListBox

Март 1st, 2012 § 0 comments § Прямая ссылка

Подсмотрел на gotdotnet.ru способ как элементы СheckedListBox выделить цветом или другим шрифтом, решил поделится. Нужно создать свой контрол и унаследовать его от CheckedListBox, при этом переопределив метод OnDrawItem дело в том что он имеет атрибут [BrowsableAttribute(false)] и в режиме дизайнера доступа к нему нет, так что это следует сделать в ручную. Вот пример того как переопределив этот метод, мы подсвечиваем третий элемент в списке CheckedListBox.


public class UserCheckedListBox : CheckedListBox
{
protected override void OnDrawItem(DrawItemEventArgs e)
{
base.OnDrawItem(e);
if(e.Index==2)
{
DrawItemEventArgs e2 = new DrawItemEventArgs(e.Graphics,e.Font,e.Bounds,e.Index,e.State,Color.Red,e.BackColor);
base.OnDrawItem(e2);
}
}
}

Убрать мерцание формы в C#

Февраль 21st, 2012 § 0 comments § Прямая ссылка

Если вы рисуете на форме или часто вызываете метод invalidate(), то форма начинает мигать, не вооруженным глазом видна перерисовка. Что бы устранить этот артефакт, добавьте в конструктор формы следующую строку


this.DoubleBuffered = true;

Создание своих контролов и drag & drop

Февраль 16th, 2012 § 0 comments § Прямая ссылка

Делал сегодня реализацию своих контролов в силу того что те задачи что ставились не могли решиться стандартным набором. Вкратце как это делается, создается класс, наследуемый от существующего контрола, либо  от базового класса Control, в нем уже переопределяется поведение контрола. Все достаточно ажурно. Хотел бы еще сделать замечание как сделать контрол перетаскиваемым. В обработчик onMouseDown добавляем функцию DoDragDrop(obj,DragDropEffects.Move); obj – это тот объект, что мы будем передавать принимающей стороне. Принимающий контрол должен иметь свойство AllowDrop, установленное в true и в событие DragEnter должно содержать код


private void onDragEnter(object sender, DragEventArgs e)
         {
             e.Effect = DragDropEffects.Move;

         }

в событии DragDrop мы получим наш объект, остается его только распаковать из object в исходный объект.

Проблемы с Panel autoscroll WinForms

Декабрь 15th, 2011 § 0 comments § Прямая ссылка

Когда использовал Panel в связке с PictureBox в C# периодически пропадал скролинг, я грешил на Студию. Оказывается нет проблема в особенности Panel так вот если выставить Anchor’ы по всем четырем сторонами то скролинг пропадает. Что бы этого избежать выставляйте Anchor’ы сверху и слева и будем вам счастье. Ссылка на msdn.

Смотреть фильмы онлайн