Я не могу указать на источник для этого, но я провел некоторое тестирование сейчас, и мое объяснение следующее:
Когда я устанавливаю BackgroundColor панели в Colors.FromArgb (50,0,0,0) тогда это работало, потому что всякий раз, когда я менял цвет фона формы, на которой живет панель, цвет панели просвечивал сквозь панель.
Но: другие элементы управления, которые жили за этой панелью, не быливидны все время.Я уверен, что по соображениям производительности рендеринг элементов управления происходит только в том случае, если они видны пользователю, то есть они не защищены другим элементом управления.Таким образом, цвет формы просвечивает, потому что прозрачный цвет действительно работает, но элементы управления за панелью не отображаются, потому что они закрыты другим элементом управления.
Вы должны написать свой собственный элемент управления:
public class TransparentPanel : Panel
{
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams;
cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
return cp;
}
}
}
это говорит окнам, что элемент управления прозрачен и элементы управления, расположенные в z-порядке за этим элементом управления, также должны быть отображены.