Подтвердить что ты не робот

С# - Почему не будет полноэкранное приложение winform ВСЕГДА закрывать панель задач?

Я использую Windows Vista и С#.net 3.5, но мой друг запускал программу на XP и имел ту же проблему.

Итак, у меня есть программа на С#, которую я запускаю в фоновом режиме со значком в SystemTray. У меня есть крючок клавиатуры низкого уровня, поэтому, когда я нажимаю две клавиши (Ctr + windows в этом случае), он будет тянуть основную форму приложения. Форма задана в полноэкранном режиме в комбинированном режиме:

this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;

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

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

У кого-нибудь есть идеи, как я могу это исправить?

EDIT: Подробнее - Я пытаюсь добиться того же эффекта, который имеет веб-браузер, когда вы помещаете его в полноэкранный режим, или когда вы помещаете PowerPoint в режим презентации.

В форме окна вы делаете это, помещая стиль рамки в none и максимизируя окно. Но иногда окно не будет закрывать панель задач по какой-то причине. Половина времени это будет.

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

4b9b3361

Ответ 1

Попробуйте (где this - ваша форма):

this.Bounds = Screen.PrimaryScreen.Bounds;
this.TopMost = true;

Это установит форму в полноэкранном режиме, и она будет закрывать панель задач.

Ответ 2

Я пробовал так много решений, некоторые из них работают в Windows XP, и все они НЕ работали в Windows 7. После всего этого я написал простой способ сделать это.

private void GoFullscreen(bool fullscreen)
    {
        if (fullscreen)
        {
            this.WindowState = FormWindowState.Normal;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Bounds = Screen.PrimaryScreen.Bounds;
        }
        else
        {
            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
        }
    }

порядок кода важен и не будет работать, если вы измените место WindwosState и FormBorderStyle.

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

Это решило мою проблему.

Ответ 3

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F11)
        if (FormBorderStyle == FormBorderStyle.None)
        {
            FormBorderStyle = FormBorderStyle.Sizable;
            WindowState = FormWindowState.Normal;
        }
        else
        {
            SuspendLayout();
            FormBorderStyle = FormBorderStyle.None;
            WindowState = FormWindowState.Maximized;
            ResumeLayout();
        }
}

Ответ 4

Насколько я знаю, панель задач находится над или под окнами на основе настроек "Держать панель задач поверх других окон". (По крайней мере, это формулировка в XP.) Я полагаю, вы могли бы попытаться выяснить, можете ли вы определить этот параметр и переключить его, если необходимо?

Ответ 5

Попробуйте изменить размер формы и довести ее до начала z-порядка:

        Rectangle screenRect = Screen.GetBounds(this);
        this.Location = screenRect.Location;
        this.Size = screenRect.Size;
        this.BringToFront();