Member 12870217 Ответов: 3

Как изменить цвет фона заголовка winform в VB.NET-что?


Я хочу изменить цвет фона заголовка в winform

Что я уже пробовал:

Я использовал этот код для установки графики на форме, но когда я делаю alt+tab для перехода в другое окно, то графика будет удалена из формы

[DllImport("user32.dll")]
статический extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);

[DllImport("User32.dll")]

частная статический модификатор extern указателя IntPtr Иgetwindowdc(указателя IntPtr hwnd элемента);

защищенное переопределение void WndProc(ref System.Окна.Форм.Сообщение м)
{
const int WM_NCPAINT = 0x85;
база.WndProc(ref m);

if (m.Msg == WM_NCPAINT)
{

Указателя IntPtr кчи = Иgetwindowdc(м. Его hwnd);
if ((int)hdc != 0)
{
Графика g = графика.FromHdc(hdc);
Rectangle screenRectangle = RectangleToScreen(это.ClientRectangle);
int titleHeight = screenRectangle.Топ - это.топ;
Rectangle rect = новый прямоугольник(0, 0, this.Ширина-100, 30);
г. FillRectangle(Кисти.Зеленый, прямой кишки);
г. Флеш();
ReleaseDC(м. Его hwnd, HDC с);
}

}

}

3 Ответов

Рейтинг:
2

Maciej Los

Самый "простой" способ-это переопределить Метод WndProc[^], видеть: c# - изменение цвета строки заголовка в WinForm[^]

Для получения более подробной информации, пожалуйста, смотрите: Обязанности И Достижения SkinFramework[^]


Рейтинг:
1

Member 12870217

Я пробовал это сделать, чтобы поместить графику на заголовок формы, но когда я делаю alt+tab, графика будет удалена из нее


Рейтинг:
0

OriginalGriff

Честно говоря, начиная с Win8, по крайней мере, вы, вероятно, не сможете сделать это, не удалив полностью все строки заголовка gubbins и не воссоздав их самостоятельно. Проблема в том, что строка заголовка имеет два состояния: активное и неактивное, и это управляет цветом панели. Вы можете сделать это в приложении UWP с помощью Класс ApplicationViewTitleBar[^ но я не думаю, что это будет возможно в Winforms.