полноэкранный режим, но не закрывать панель задач - PullRequest
10 голосов
/ 20 июня 2011

У меня есть приложение WinForms, которое при входе в систему устанавливается в полноэкранный режим.

Моя проблема в том, что она также закрывает панель задач Windows.Я не хочу, чтобы мое приложение покрывало панель задач.

Как это можно сделать?

Ответы [ 9 ]

28 голосов
/ 24 марта 2015

Я делаю это с помощью этого кода:

this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea;
this.WindowState = FormWindowState.Maximized;
20 голосов
/ 20 июня 2011

Это, вероятно, то, что вы хотите. Он создает «развернутое» окно, не скрывая панель задач.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load( object sender, EventArgs e )
    {
        FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        Left = Top = 0;
        Width = Screen.PrimaryScreen.WorkingArea.Width;
        Height = Screen.PrimaryScreen.WorkingArea.Height;
    }
}
4 голосов
/ 18 марта 2013

Мне ответили здесь :

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

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

private void frmMain_Load(object sender, EventArgs e)
{
    this.MaximizeBox = false;
}
1 голос
/ 13 июня 2017

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

private void Form_Load(object sender, EventArgs e)
{
    this.Height = Screen.PrimaryScreen.WorkingArea.Height;
    this.Width = Screen.PrimaryScreen.WorkingArea.Width;
    this.Location = Screen.PrimaryScreen.WorkingArea.Location;
}
1 голос
/ 17 февраля 2017

Если у вас несколько экранов, вы должны сбросить расположение MaximizedBounds:

Rectangle rect = Screen.FromHandle(this.Handle).WorkingArea;
rect.Location = new Point(0, 0);
this.MaximizedBounds = rect;
this.WindowState = FormWindowState.Maximized;
1 голос
/ 20 июня 2011

Если Maximizing - это не то, что вам нужно, тогда вам нужно самостоятельно рассчитать размер окна, проверив расположение и размер панели задач:

найти выход-размерно-позиционно-оф-панели задач

0 голосов
/ 20 февраля 2016
private void frmGateEntry_Load(object sender, EventArgs e)
    {
        // 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;
    }
0 голосов
/ 17 декабря 2013

Попробуйте без FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; и комментария, например:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load( object sender, EventArgs e )
    {
        // FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        Left = Top = 0;
        Width = Screen.PrimaryScreen.WorkingArea.Width;
        Height = Screen.PrimaryScreen.WorkingArea.Height;
    }
}
0 голосов
/ 20 июня 2011

Если вы хотите использовать WindowState = Maximized;, вы должны сначала указать ограничения размера формы, максимизируемые свойством MaximizedBounds ...

Пример:

MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea;
WindowState = FormWindowState.Maximized;

Где вы ограничиваете размер вашей формы рабочей областью, которая является областью рабочего стола дисплея

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...