Как сделать приложение WinForms полностью включенным?

У меня есть приложение WinForms, которое я пытаюсь сделать в полноэкранном режиме (что-то вроде того, что делает VS в полноэкранном режиме).

В настоящее время я устанавливаю FormBorderStyle в None и WindowState для Maximized что дает мне немного больше места, но оно не распространяется на панель задач, если оно видно.

Что мне нужно сделать, чтобы использовать это пространство?

Что касается бонусных очков, есть ли что-то, что я могу сделать, чтобы сделать MenuStrip для этого пространства?

7 Solutions collect form web for “Как сделать приложение WinForms полностью включенным?”

К базовому вопросу будет применен следующий трюк (скрытие панели задач)

 private void Form1_Load(object sender, EventArgs e) { this.TopMost = true; this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; } 

Но, что интересно, если вы поменяете эти последние две строки, панель задач останется видимой. Я думаю, что последовательность этих действий будет трудно контролировать с помощью windows свойств.

Проверенное и простое решение

Я искал ответ на этот вопрос в SO и некоторых других сайтах, но один дал ответ, был очень сложным для меня, а некоторые другие ответы просто не работают правильно, поэтому после большого тестирования кода я решил эту загадку.

Примечание. Я использую Windows 8, и моя панель задач не находится в режиме автоматического скрытия.

Я обнаружил, что установка WindowState в Normal перед выполнением любых изменений остановит ошибку с закрытой панелью задач.

Код

Я создал этот class, который имеет два метода: первый входит в полноэкранный режим, а второй оставляет «полноэкранный режим». Поэтому вам просто нужно создать объект этого classа и передать форму, которую вы хотите установить в полноэкранном режиме, в качестве аргумента методу EnterFullScreenMode или методу LeaveFullScreenMode:

 class FullScreen { public void EnterFullScreenMode(Form targetForm) { targetForm.WindowState = FormWindowState.Normal; targetForm.FormBorderStyle = FormBorderStyle.None; targetForm.WindowState = FormWindowState.Maximized; } public void LeaveFullScreenMode(Form targetForm) { targetForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; targetForm.WindowState = FormWindowState.Normal; } } 

Пример использования

  private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e) { FullScreen fullScreen = new FullScreen(); if (fullScreenMode == FullScreenMode.No) // FullScreenMode is an enum { fullScreen.EnterFullScreenMode(this); fullScreenMode = FullScreenMode.Yes; } else { fullScreen.LeaveFullScreenMode(this); fullScreenMode = FullScreenMode.No; } } 

Я поставил этот же ответ на другой вопрос, который я не уверен, является ли это дубликат или нет. (Ссылка на другой вопрос: как отобразить форму Windows в полноэкранном режиме на панели задач? )

И для вопроса menustrip, попробуйте установить

 MenuStrip1.Parent = Nothing 

когда в полноэкранном режиме он должен исчезнуть.

И, выйдя из полноэкранного menustrip1.parent снова сбросьте menustrip1.parent в форму, и menustrip снова станет нормальным.

Вы можете использовать следующий код, чтобы он соответствовал вашему системному экрану, и панель задач видна.

  private void Form1_Load(object sender, EventArgs e) { // hide max,min and close button at top right of Window this.FormBorderStyle = FormBorderStyle.None; // fill the screen this.Bounds = Screen.PrimaryScreen.Bounds; } 

Нет необходимости использовать:

  this.TopMost = true; 

Эта строка вмешивается в alt+tab чтобы переключиться на другое приложение. («TopMost» означает, что окно остается поверх других окон, если только они не помечены как «TopMost».)

Недавно я сделал приложение Mediaplayer, и я использовал API-вызовы, чтобы убедиться, что панель задач была скрыта, когда программа запускалась в полноэкранном режиме, а затем восстановила панель задач, когда программа не была в полноэкранном режиме или не имела фокуса или была отключена.

 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer Sub HideTrayBar() Try Dim tWnd As Integer = 0 Dim bWnd As Integer = 0 tWnd = FindWindow("Shell_TrayWnd", vbNullString) bWnd = FindWindowEx(tWnd, bWnd, "BUTTON", vbNullString) ShowWindow(tWnd, 0) ShowWindow(bWnd, 0) Catch ex As Exception 'Error hiding the taskbar, do what you want here.. End Try End Sub Sub ShowTraybar() Try Dim tWnd As Integer = 0 Dim bWnd As Integer = 0 tWnd = FindWindow("Shell_TrayWnd", vbNullString) bWnd = FindWindowEx(tWnd, bWnd, "BUTTON", vbNullString) ShowWindow(bWnd, 1) ShowWindow(tWnd, 1) Catch ex As Exception 'Error showing the taskbar, do what you want here.. End Try End Sub 

Вам нужно установить верхнее окно.

Я не знаю, будет ли он работать на .NET 2.0, но он работал на .NET 4.5.2. Вот код:

 using System; using System.Drawing; using System.Windows.Forms; public partial class Your_Form_Name : Form { public Your_Form_Name() { InitializeComponent(); } // CODE STARTS HERE private System.Drawing.Size oldsize = new System.Drawing.Size(300, 300); private System.Drawing.Point oldlocation = new System.Drawing.Point(0, 0); private System.Windows.Forms.FormWindowState oldstate = System.Windows.Forms.FormWindowState.Normal; private System.Windows.Forms.FormBorderStyle oldstyle = System.Windows.Forms.FormBorderStyle.Sizable; private bool fullscreen = false; ///  /// Goes to fullscreen or the old state. ///  private void UpgradeFullscreen() { if (!fullscreen) { oldsize = this.Size; oldstate = this.WindowState; oldstyle = this.FormBorderStyle; oldlocation = this.Location; this.WindowState = System.Windows.Forms.FormWindowState.Normal; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Bounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds; fullscreen = true; } else { this.Location = oldlocation; this.WindowState = oldstate; this.FormBorderStyle = oldstyle; this.Size = oldsize; fullscreen = false; } } // CODE ENDS HERE } 

Применение:

 UpgradeFullscreen(); // Goes to fullscreen UpgradeFullscreen(); // Goes back to normal state // You don't need arguments. 

Обратите внимание: вы ДОЛЖНЫ разместить его внутри classа Form (пример: partial class Form1 : Form { /* Code goes here */ } ), или он не будет работать, потому что, если вы не поместите его в какую-либо форму, this приведет к созданию исключение.

  • Как определить текущую нажатую клавишу?
  • Как читать цвет пикселя экрана
  • В чем разница между User Control, Custom Control и Component?
  • Попытка использования classа C # SpellCheck
  • Как установить прозрачность или прозрачность панели в WinForms?
  • Бесплатный / открытый редактор исходного кода. Интерфейс пользовательского интерфейса для .Net
  • this.Visible не работает в Windows Forms
  • Невозможно просмотреть конструктор при кодировании формы в C #
  • Как я могу рассматривать круг как элемент управления после его рисования? - Перемещение и выбор фигур
  • Скрытие нежелательных свойств в пользовательских элементах управления
  • Создание контроля прозрачным
  • Interesting Posts

    Работа с развернутой петлей, для цикла не работает

    Добавить CSS в iFrame

    Как сделать .lib-файл, когда есть .dll-файл и заголовочный файл

    Что такое разложение массива?

    Рекомендуется ли штабелировать внутренний жесткий диск друг над другом (после снятия их с корпуса)

    Возможно ли программно добавить папки на панель быстрого доступа Windows 10 в окне проводника?

    Как я могу настроить параметры подключаемого модуля Autocomplete?

    В чем разница между «длинным», «длинным длинным», «длинным int» и «long long int» в C ++?

    Адрес памяти C # и переменная

    Кортежи (или массивы) в качестве словарных ключей в C #

    Каков рекомендуемый каталог для хранения содержимого веб-сайта?

    Как вы работаете в пакетном файле Windows?

    В чем разница между jQuery .live () и .on ()

    Создание установочного флеш-диска Windows XP в Linux

    Общие сведения о переадресации портов и NAT

    Давайте будем гением компьютера.