![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Создаю проект UserControl, переписываю класс контрола таким образом, как показано ниже, компилирую и получаю сборку (DLL), добавляю полученную супер-кнопку в другой проект (Add Reference..., перетягиваю супер-кнопку "CFadeButton control" из тулбокса на форму), и компилирую проект ----- почему ВСЕ свойства кнопки сразу после запуска программы кривые (цвет - чёрный, Caption - "cFadeButton" и т.п.) ? Тоже самое (цвет чёрный) - на форме в Design View.
Помогите !!!
-------------------- ![]() |
|||
|
||||
Albinos |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 11.10.2003 Репутация: 2 Всего: 3 |
Не знаю. Я делал вот так:
Скорее всего тебя интересует внешний вид кнопки:
А для того, чтобы прорисовка не была заметна - включаем двойную буферизацию:
Можно программировать видимость свойств и общее поведение контрола в дезайнере и редакторе:
Ну в общем и т.д. В MSDN в принципе про это написано, но искать будешь долго ... ![]() |
||||||||
|
|||||||||
Albinos |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 11.10.2003 Репутация: 2 Всего: 3 |
![]() |
||||
|
|||||
Albinos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 11.10.2003 Репутация: 2 Всего: 3 |
Блин, а здесь отработала
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Не катит - компилер ругается, что нужно реализовать методы интерфейса IButtonControl (NotifyDefault, PerformClick, DialogResult). И раз мы берём базовый класс System.Windows.Forms.Control - то получается, что весь контрол нужно организовать с нуля ? А в моём примере класс порождается уже из готовой кнопки, я лишь добавил функциональности для "подсветки" кнопки при наведении мыши. Или так делать нельзя (напрямую производить от System.Windows.Forms.Button) ? -------------------- ![]() |
|||
|
||||
Guest |
|
||||
Unregistered |
Короче, если все еще проблемка осталась, вот тебе ее решение.. Я надеюсь.
![]() Я тут написал два почти одинаковых файла, но они реализуют немножко разный подход. Здесь я не стал выносить описание собственного контрола (приятно звучит ![]() Из примеров следует, что от Button МОЖНО наследоваться. Причем без проблем. Чем отличаются файлы? 1-й (ButtonSon.cs) ПЕРЕГРУЖАЕТ функции OnMouseEnter, OnMouseLeave, к-е, если не ошибаюсь, определены в базовом классе Control. 2-й (ButtonSon1.cs) НАВЕШИВЕТ СОБЫТИЯ OnMouseEnter, OnMouseLeave. Ты можешь откомпилить оба файла и посмотреть, что получится - подсвеченный контрол. А различие подходов 1-го и 2-го файла, что от 2-й версии проблемнее наследоваться - я имею ввиду, там навешивание событий происходит в конструкторе - если ты в потомке от собственного контрола (может ведь такое быть?) явно не вызовешь конструктор родителя - все - обработчики потеряны. Первый способ, как мне кажется, лучше. Мы просто перегрузили методы. Соответственно, наследоваться будут уже новые обработчики -> с наследниками все в порядке! ![]() ClientSon:
ClientSon1:
|
||||
|
|||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Guest - это я!
Просто почему-то забыл залогиниться.. ![]() Это сообщение отредактировал(а) Kurt - 7.2.2004, 13:23 -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Albinos |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 11.10.2003 Репутация: 2 Всего: 3 |
Разумеется. Если залезть в MSDN и посмотреть, то Button именно так и определяется. Я тебе не все дал, а только наметки. Необходио реализовать интерфйс IButtonControl (если в редакоре начать писать SUPERButton: Control, IButtonControl, то VS предложить добавить реализацию интерфейса IButtonControl в твой класс. По нажатию TAB`а. Дальше реализовывать надо самому, т.е. приватные переменные и т.д. и т.п.).
Наследовать конечно можно. Меня интересовало написание своих контролов с нуля, поэтому пошел по такому пути. Подсветку кнопки реализовывал как описывает Kurt (имею ввиду добавление обработчика на MouseHover). Ну и остальной функционал так же. А вообще - привожу полный код (возможно, кривой, т.к. времени на прорботку было мало.)
|
||||||
|
|||||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
А я наоборот - считал, что необходимо именно наследование от Button'a, как спрашивал mr.DUDA. ![]() -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Albinos, круто !
(оффтоп) А все эти #region-ы, комментарии и теги сам вручную вставляешь, или есть какая кнопка/фича в VS ? Или это делает Visual Assist.NET ![]() ![]() Kurt, спасибо за пример. Я нашёл свой способ как обойти "черноту" кнопки - дизайнер форм заполняет все свойства объекта значениями, указанными в конструкторе. В том числе и CurrStep. А так как при этом дизайнер не создаёт поток Thread, но зато выполняет CurrStep.set, то значение this.BackColor = m_ColorCurrent, который равен неизвестно чему. -------------------- ![]() |
|||
|
||||
Albinos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 11.10.2003 Репутация: 2 Всего: 3 |
mr.DUDA, #region-ы сам вставляю (кстати, очень удобная штука - при сохранении файла и последующем открытии сохраняют свое состояние свернутости\развернутости), хотя наверняка возможно вставлять их как-то еще.
А вот комментарии и теги вставляются автоматически, если набрать /// . |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |