Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Общие вопросы > Свой контрол(свойства,методы,переменные)


Автор: Technos 12.08.03, 14:01

Приветствую господа!
Пишу первый раз свой контрол - календарь. И возникла парочка вопросов, восновном касающихся отрисовки.
1) Как(где) правильней отрисовывать сам контрол? Всмысле если весь код поместить в событие Paint, тормозно как-то наверное? Или использовать if конструкции в Paint и отрисовывать отдельные части? Нигде не нашел рекомендаций где и как лучше это делать.
2)Есть ли фишка, с помощью которой можно залить область клетки где нарисовано число
другим цветом НО так, чтобы число не было закрашено(эффект как в paintbrush'e заливка).
3)Есть такой код:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    <br>[<br>Category("Colors"),Description("Grid Color")<br>]<br>public System.Drawing.Color GridCol<br>{<br>set<br> {<br>  this.GridColor = value;<br> }<br>get<br> {<br>  return this.GridColor;<br> }<br>}<br><br>[<br>Category("Colors"),<br>Description("Selection Color")<br>]<br>...<br>

Почему в свойствах контрола(когда я его использую в проекте), эти свойства разбросаны?Категория одинаковая выставлена...

Пока вроде всё:)
Кто может, подкиньте советы:)

Автор: andrey 12.08.03, 20:55
1) В Paint - это не тормозно, только поставь ссответствующие ControlStyles, там AllPaintingInWmPaint итд.
2)Почему нельзя сначала залить, а потом нарисовать число?
3)Потому что они сортируются па алфавиту внутри категории

Автор: Technos 12.08.03, 22:16
1)Спасибо, значит так и буду делать:)
2)Фишка такая:
Если юзер выбирает дату в календаре, то мне нужно менять цвет фона, заного перерисовывать весь календарь? Надо продумать как ЛЕГКЧЕ и чтоб не шибко тормозило...(ты поопытнее в этом деле, я кроме своих кнопок ничего не рисовал:))
Любая инфа в направлении создания контроллов будет очень полезна.
3)А как их запихнуть в подгруппу? (можно ссылочку на МСДН, просто сам не нашёл)

Автор: andrey 13.08.03, 20:46
2)Зачем весь? Только две клетки, если уж так сильно заботит производительность. Но вообще скорости GDI и даже GDI+ Должно хватать для перерисовки всего контрола без особых тормозов.
3)Надо использовать CategoryAttribute. Почему у тебя не растаскивается по группам я не знаю, у меня всё OK. Может не включён Categorized view?

PS А почему бы не использовать стандартный ActiveX календарик?

Автор: Technos 14.08.03, 01:12
2)Точно:)
3)Студия чегото барахлит...вроде врублен вью по категориям, в C#Builder'e все впорядке...
Насчет АктивХ, как и нативный календарь не подходит изза малых графических возможностей. Нужно чтобы можно было отмечать разные даты разными цветами, блинк эффект дат...

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)