Хронологично във вашия въпрос вие попитахте как да се отървете от тази лента в горната част. Ако сте настоявали да използвате „фалшиви“ страници с раздели, където разделите просто контролират съдържанието на фиксирания набор от контроли, тогава свиването на височината на контролата с раздели до точка, където това не се вижда, вероятно е приемливо решение. Току-що го пробвах и с някои настройки изглежда най-вече това, което мисля, че търсите. За протокола бих препоръчал всъщност да използвате страниците с раздели по предназначение, тоест като хостове за контроли, дори ако направите персонализирана контрола, която обединява всички контроли, които искате да бъдат видими. Това ще пасне много по-добре на парадигмата на раздела.
За втората точка искате да промените размера на разделите. Невъзможен. Рамката дава две опции за DrawStyle
, Normal и OwnerDrawFixed
. Normal
позволява на Windows да зададе размера на раздела въз основа на текста и шрифта, OwnerDrawFixed
означава, че размерът на раздела е напълно фиксиран. Няма повече контрол върху това. OwnerDrawFixed
обаче ви дава достъп до събитието OnDrawItem
, което искате да използвате за рисуване на самите раздели.
Сега изглежда, че сте ухапали куршума и сте задали UserPaint на True, което означава, че сега правите цялата рисунка. Препоръчвам на този етап да зададете DrawStyle
обратно на Normal
, след което можете да добавите малко задкулисен текст, за да накарате Windows да контролира автоматично ширината на разделите. Ще предупредя, че това няма да е много надеждно, тъй като всеки има различни настройки на шрифта и няколко пиксела изключени и нищо няма да нарисува правилно.
Така че тук ще посоча TabControl.GetTabRect(index As Integer)
, методът, който можете да използвате, за да получите ограничаващия правоъгълник на даден раздел. Използвам това в цикъл върху всички индекси на раздели и след това правя всичко необходимо за раздела в правоъгълника, предоставен от всеки раздел. Това означава, че не е необходимо да използвам OwnerDrawFixed
, за да получа границите за рисуване.
Въпреки това, ако искате по-добър контрол, вие сте на 80% от пътя просто да внедрите точно какъвто контрол искате да видите, като започнете от Control
или UserControl
. Подобен външен вид може да се постигне от припокриващи се бутони с известна логика за рисуване и разположение. Тогава можете да получите и целия вид на текста, който искате. Аз самият смятах същото, но не го направих, защото все още хоствам TabPages
. Тъй като сте свободни от това, ще бъде още по-лесно...
person
J Collins
schedule
18.09.2012
Разработваме gwt-уеб приложение с Google App Engine. Сега нашето приложение стана бавно поради много jstl логика в jsp страниците. По-рано исках да използвам услугата memcache на appengine, но след като прочетох някои документи, разбрах, че „Ehcache“ е по-добър от memcache с поддръжка на gae.
Поправете ме, ако греша, и моля, отговорете ми с подходящо решение, ако някой има идея относно това.
- person sczdavos   schedule 27.08.2012SetStyle(ControlStyles.UserPaint, True)
и използвах малко код за стилизиране на компонент. Но бих искал да използвам собствено събитиеOnDrawItem
. Защото имам в моето приложениеMainForm
някои променливи и изображения, които искам да използвам в събитие Drawing. Как мога да направя това? - person sczdavos   schedule 18.09.2012