Ответ 1
Попробуйте (где this
- ваша форма):
this.Bounds = Screen.PrimaryScreen.Bounds;
this.TopMost = true;
Это установит форму в полноэкранном режиме, и она будет закрывать панель задач.
Я использую Windows Vista и С#.net 3.5, но мой друг запускал программу на XP и имел ту же проблему.
Итак, у меня есть программа на С#, которую я запускаю в фоновом режиме со значком в SystemTray. У меня есть крючок клавиатуры низкого уровня, поэтому, когда я нажимаю две клавиши (Ctr + windows в этом случае), он будет тянуть основную форму приложения. Форма задана в полноэкранном режиме в комбинированном режиме:
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
Так это в основном работает. Когда я нажимаю CTR + Windows, он отображает форму, независимо от того, какую программу я уделял. Но иногда панель задач по-прежнему появляется над формой, которую я не хочу. Я хочу, чтобы он всегда был полноэкранным, когда я нажимал эту комбинацию клавиш.
Я полагаю, что это имеет какое-то отношение к тому, что изначально было в приложении. Но даже когда я нажимаю на свою основную форму, панель задач иногда остается там. Поэтому я задаюсь вопросом, действительно ли фокус является проблемой. Кажется, что иногда панель задач упряма и не хочет сидеть за моей программой.
У кого-нибудь есть идеи, как я могу это исправить?
EDIT: Подробнее - Я пытаюсь добиться того же эффекта, который имеет веб-браузер, когда вы помещаете его в полноэкранный режим, или когда вы помещаете PowerPoint в режим презентации.
В форме окна вы делаете это, помещая стиль рамки в none и максимизируя окно. Но иногда окно не будет закрывать панель задач по какой-то причине. Половина времени это будет.
Если у меня есть главное окно наверху, остальные будут отставать от него, когда я нажму на него, чего я не хочу, если панель задач скрыта.
Попробуйте (где this
- ваша форма):
this.Bounds = Screen.PrimaryScreen.Bounds;
this.TopMost = true;
Это установит форму в полноэкранном режиме, и она будет закрывать панель задач.
Я пробовал так много решений, некоторые из них работают в 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 ложным, чтобы другие формы могли попасть в основную форму.
Это решило мою проблему.
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();
}
}
Насколько я знаю, панель задач находится над или под окнами на основе настроек "Держать панель задач поверх других окон". (По крайней мере, это формулировка в XP.) Я полагаю, вы могли бы попытаться выяснить, можете ли вы определить этот параметр и переключить его, если необходимо?
Попробуйте изменить размер формы и довести ее до начала z-порядка:
Rectangle screenRect = Screen.GetBounds(this);
this.Location = screenRect.Location;
this.Size = screenRect.Size;
this.BringToFront();