Пользовательский элемент управления не будет отображать элементы управления за ним, даже если он прозрачный

StackOverflow https://stackoverflow.com/questions/1605206

Вопрос

В настоящее время я пишу пользовательский элемент управления с вкладками. Я создал свой собственный элемент управления вместо рисования владельцем TabControl, потому что полагал, что он будет быстрее и более гибким. Мой стиль управления вкладками сам по себе после элемента управления вкладки VS2008; то есть, когда вкладка выбрана, часть этой вкладки находится перед другими невыбранными вкладками.

Мой элемент управления вкладками состоит из панели, содержащей все мои объекты TabButton, которые сами являются собственными вкладками. Я установил прозрачность TabButton следующим образом:

public TabButton()
{
     ...
     SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
     UpdateStyles();
     this.BackColor = Color.Transparent;
}

Однако, когда вкладка выбрана и находится перед другой вкладкой, часть невыбранной вкладки, которая должна появиться за частью выбранной вкладки, не отображается. Это стандартный цвет SystemColors.Control , который заполняет остальную часть прямоугольника отсечения для выбранной кнопки.

Как я могу добиться надлежащей прозрачности в моем пользовательском элементе управления?

Также: TabButton наследует Control, поэтому мне нужно было использовать SetStyle для использования прозрачности.

-Эрик Смит

Это было полезно?

Решение

Посмотрите на это: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html

В прошлый раз, когда я был в .NET Windows Forms, не было очевидно, что вам нужно было выполнить некоторые из этих хакеров psuedo, чтобы заставить работать прозрачность. Я не уверен, что они изменили это за последние ~ 3 года, но я помню, что делал что-то подобное. Я бы попробовал явно не рисовать фон первым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top