Пользовательский элемент управления не будет отображать элементы управления за ним, даже если он прозрачный - PullRequest
0 голосов
/ 22 октября 2009

В настоящее время я пишу пользовательский элемент управления с вкладками. Я создал свой собственный элемент управления вместо рисования владельцем 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 для использования прозрачности.

-Эрик Смит

1 Ответ

1 голос
/ 22 октября 2009

Посмотрите на это: http://saftsack.fs.uni -bayreuth.de / ~ dun3 / архивы / создание прозрачной панели в сети / 108.html

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

...