|
А как сделать прозрачный TextBox?
|
|||
---|---|---|---|
#18+
Есть окно свойств. TabControl, TabPage (UseVisualStyleBackColor=True) На TabPage отображение идет в виде: LabelProperty1 TextBoxProperty1 (ReadOnly=True, BorderStyle=None) LabelProperty2 TextBoxProperty2 (ReadOnly=True, BorderStyle=None) ... LabelPropertyN TextBoxPropertyN (ReadOnly=True, BorderStyle=None) TextBoxProperty -используется TextBox а не Label, чтоб по ним можно было пройтись, при необх. скопировать, короче хочу стандартный TextBox У TextBox есть св-во BackColor, но выставить его в Transparent не получается. Выставить его в какой-то фиксированный цвет - не вариант, т.к. TabPage (UseVisualStyleBackColor=True) -вообще говоря не фиксированный цвет, а градиент (во всяком случае на XP-теме сильно заметный). В VB6 такого вопроса не стояло, т.к. там не было такой роскоши как TabPage (UseVisualStyleBackColor=True). Просто тупо брал GetPixel с верхнего левого угла Tab-а и красил Frame (и все текстбоксы) в этот один цвет - получалось похоже. У TextBox есть сообщение WM_CTLCOLOREDIT, в обработке которого можно подменить HBRUSH - это я умею, т.е. прозрачность относительно фоновой картинки - не есть проблема. Но для этого надо знать фоновую картинку, которая под ним лежит (чтоб изготовить HBRUSH=CreatePatternBrush(hBitmap)), а я ее не знаю, т.к. это тематический фон Tab-а. Если красить в один цвет (GetPixel с верхнего левого угла Tab-а), то будет заметно. Пока вижу 2 варианта: 1) Пытаться брать пиксель цвета из-под верхнего левого угла TextBox-а -для каждого свой - тогда не будет заметно. 2) Отключить UseVisualStyleBackColor для панелей и делать как в VB6 -т.е. красить все в цвет левого верхнего угла Tab-а. Какие идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2015, 09:12 |
|
А как сделать прозрачный TextBox?
|
|||
---|---|---|---|
#18+
Ну вот так если. Код: vbnet 1. 2. 3. 4. 5. 6. 7.
С ручной заменой As (New) TextBox на As (New) CTextBox в файле конструктора. Вроде фурычит. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2015, 09:53 |
|
А как сделать прозрачный TextBox?
|
|||
---|---|---|---|
#18+
Не, не работает так. Он его похоже белым делает. На 8-ке тематический фон таба белый, вот и показалось что получилось. А на XP все сразу ясно, что не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2015, 17:24 |
|
А как сделать прозрачный TextBox?
|
|||
---|---|---|---|
#18+
Сделал по тому же принципу что и раньше. Т.е. беру видимый TabPage (пофиг какой, лишь бы он был прорисован на экране) и второй пиксель слева на уровне Textbox-а (Top), и присваиваю этот цвет текстбоксу. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Ну, при смене стиля конечно не сработает если не перевызывать ф-цию, но на это обычно плюю - окно можно закрыть и открыть снова. Картинку прилагаю, чтоб было ясно чего добиваюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2015, 19:11 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1401820]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 346ms |
total: | 479ms |
0 / 0 |