Развернутый экран игнорирует панель задач - PullRequest
8 голосов
/ 10 июня 2009

У меня есть форма, которую я установил на Максимально , но по какой-то причине она игнорирует панель задач и максимизирует весь экран. Это типично? Есть ли обходной путь?

Я использую Windows XP с настройкой двойного монитора (панель задач в первом / главном окне).

Ответы [ 8 ]

14 голосов
/ 05 ноября 2009

Если вы используете FormBorderStyle.None, то очень просто убедиться, что он не покрывает панель задач при максимизации:

this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;

Это, вероятно, будет работать для других стилей границ и, вероятно, является самым чистым способом гарантировать, что ваша форма не покрывает панель задач.

6 голосов
/ 10 июня 2009

Одна вещь, которую я оставил вне описания - я отключил кнопку максимизации. Когда я проверил включение этого свойства, панель задач снова появилась. Очевидно, предполагается, что если вы не хотите, чтобы кнопка максимизации была создана, вы создаете приложение в стиле киоска, где вы не хотите, чтобы ваши пользователи видели что-либо, кроме экрана приложения. Не совсем то, что я ожидал, но, думаю, работает.

3 голосов
/ 18 марта 2013

Одна вещь, которую я оставил в описании - я отключил кнопку максимизации. Когда я проверил включение этого свойства, панель задач снова появилась. Очевидно, предполагается, что если вы не хотите, чтобы кнопка максимизации была создана, вы создаете приложение в стиле киоска, где вы не хотите, чтобы ваши пользователи видели что-либо, кроме экрана приложения. Не совсем то, что я ожидал, но, думаю, работает.

У меня была эта проблема, и я решил ее с помощью Джеффа. Во-первых, установите для windowstate значение Maximized . но Не отключайте MaximizeBox . Тогда, если вы хотите, чтобы MaximizeBox был отключен, вы должны сделать это программно:

private void frmMain_Load(object sender, EventArgs e)
{
   this.MaximizeBox = false;
}
3 голосов
/ 10 июня 2009

Если вы не хотите повторно активировать кнопку «Развернуть», вы можете вручную установить размер окна:

private void Maximize()
{
    Screen screen = Screen.FromPoint(this.Location);
    this.Size = screen.WorkingArea.Size;
    this.Location = Point.Empty;
}

(Рабочая область - это область экрана, которая может использоваться приложениями, за исключением панели задач и других панелей инструментов)

3 голосов
/ 10 июня 2009

Установите границу формы на «Нет» перед тем, как развернуть ее.

Этот код будет работать на одном мониторе:

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

Я не тестировал сценарий с двумя мониторами, поскольку у меня его сейчас нет. : P

РЕДАКТИРОВАТЬ : я не получил "развернутый экран Игнорирует Панель задач". Что означает Игнорирует ?

Хотите, чтобы ваша форма покрывала панель задач и заполняла весь экран?

2 голосов
/ 19 августа 2011

Панель задач можно закрепить слева, сверху, снизу, справа. Если вы хотите развернуть окно без наложенной панели задач, используйте этот код:


...cut...
  public partial class Form2 : Form
    {
        public Form2()
        {
          // set default start position to manual  
          this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 


          // set position and size to the Form.  
          this.Bounds = Screen.PrimaryScreen.WorkingArea; 


      ....
          InitializeComponent();
        }

...cut...
0 голосов
/ 17 февраля 2019

Я сделал следующее:

  • Установите для свойства MaximizeBox значение true
  • Установите для WindowState значение Maximized
  • В конструкторе формы написали следующее:

    this.Bounds = Screen.PrimaryScreen.WorkingArea;

0 голосов
/ 06 марта 2013

Когда вы устанавливаете стиль границы формы в нет, форма будет скрывать панель задач. Чтобы обойти это, вы должны установить MaximumSize формы вручную. Если окна автоматически скрывают панель задач, форма закроет даже скрытую панель задач! Чтобы обойти это, уменьшите максимальную высоту размера на один пиксель (если ваша панель задач находится внизу)!

        Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _
                                  My.Computer.Screen.WorkingArea.Size.Height - 1)
...