Изучение различных методов реализации полноэкранного режима в VB.NET

В этой статье блога мы рассмотрим различные методы реализации полноэкранного режима в VB.NET. Полноэкранный режим позволяет вашему приложению занимать весь экран, обеспечивая более захватывающий пользовательский опыт. Мы рассмотрим различные подходы с использованием Windows Forms и WPF и предоставим примеры кода для каждого метода.

Метод 1: Windows Forms — развертывание формы
Один простой способ добиться полноэкранного режима в Windows Forms — развернуть основную форму. Это можно сделать, установив для свойства WindowStateформы значение Maximized:

Me.WindowState = FormWindowState.Maximized

.

Метод 2: Windows Forms — скрытие строки заголовка и панели задач
Чтобы создать настоящий полноэкранный режим, не отвлекаясь, вы можете скрыть строку заголовка и панель задач. Этого можно добиться, установив для свойства FormBorderStyleзначение Noneи развернув форму:

Me.FormBorderStyle = FormBorderStyle.None
Me.WindowState = FormWindowState.Maximized

Метод 3: WPF — развертывание окна
В WPF вы можете перейти в полноэкранный режим, развернув главное окно. Установите для свойства WindowStateокна значение Maximized:

Me.WindowState = WindowState.Maximized

.

Метод 4: WPF — установка WindowStyle в значение None
Подобно подходу Windows Forms, вы можете скрыть строку заголовка и панель задач в WPF, установив для свойства WindowStyleзначение Noneи разворачивание окна:

Me.WindowStyle = WindowStyle.None
Me.WindowState = WindowState.Maximized

Метод 5: WPF — использование Win32 API
Для большего контроля над полноэкранным режимом вы можете использовать функции Win32 API для установки стиля и положения окна. Вот пример использования функций SetWindowLongи SetWindowPos:

Imports System.Runtime.InteropServices
Public Class MainWindow
    Inherits Window
    Private Const GWL_STYLE As Integer = -16
    Private Const WS_SYSMENU As Integer = &H80000
    Private Const SWP_FRAMECHANGED As Integer = &H20
    <DllImport("user32.dll", SetLastError:=True)>
    Private Shared Function SetWindowLong(hWnd As IntPtr, nIndex As Integer, dwNewLong As Integer) As Integer
    End Function
    <DllImport("user32.dll", SetLastError:=True)>
    Private Shared Function SetWindowPos(hWnd As IntPtr, hWndInsertAfter As IntPtr, x As Integer, y As Integer, cx As Integer, cy As Integer, uFlags As UInteger) As Boolean
    End Function
    Protected Overrides Sub OnSourceInitialized(e As EventArgs)
        MyBase.OnSourceInitialized(e)
        Dim handle As IntPtr = New WindowInteropHelper(Me).Handle
        Dim style As Integer = GetWindowLong(handle, GWL_STYLE)
        SetWindowLong(handle, GWL_STYLE, style And Not WS_SYSMENU)
        SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP_FRAMECHANGED)
    End Sub
End Class