.net специальная кнопка управления дизайном

У меня есть следующая задача программирования (Visual Studio .net - без веб-приложения), где мне интересно, есть ли какой-то пользовательский элемент управления (сторонний?), который может быть полезен:

Существует прямоугольная компоновка, и должна быть возможность создавать и перемещать прямоугольные кнопки. Пользователь должен иметь возможность создавать кнопки и настраивать такие свойства, как цвет, изображение, текст и т. д. на уровне пользователя. Также должна быть возможность установить пользовательские свойства для кнопки. В идеале должна быть возможность выравнивать кнопки по сетке, muti-select и т.д.

Кто-нибудь знает, нужно ли мне создавать это с нуля или есть что-то, что облегчит мою жизнь..

Спасибо


person Thomas    schedule 22.01.2010    source источник


Ответы (2)


Простой пример перемещения стандартной кнопки в зависимости от положения мыши здесь .

Вы можете создавать элементы управления, которые наследуются от существующих элементов управления, чтобы упростить жизнь. Проверьте это на MSDN.

Что касается перемещения элементов управления и т. д. в форме, вы можете создавать события, которые переопределяют и перехватывают событие нажатия мыши и фактически изменяют значения местоположения (x, y) на основе движения мыши. Вы также можете взаимодействовать с любыми другими свойствами, основываясь на движении мыши или изменении цвета и текстовом значении....

Например, если я хочу изменить цвет кнопки при наведении курсора мыши. Я бы переопределил метод мыши поверх моего пользовательского элемента управления, который наследуется от кнопки. Я установлю цвет в этом методе, когда он пойман.

Вы даже можете переопределить onPaint и самостоятельно обрабатывать весь рисунок.

person Gabe    schedule 22.01.2010

Если вы используете WinForms, вы можете взглянуть на DesignSurface, который позволяет вам добавить поверхность дизайнера в ваше приложение... вы можете перемещать кнопки, как дизайнер Visual Studio. Проверьте это:

http://msdn.microsoft.com/en-us/magazine/cc163634.aspx

person Brian Genisio    schedule 22.01.2010