我有我的应用程序,并希望让它以全屏模式运行,没有任务栏。 我发现了如何隐藏窗口栏,但是当我启动我的应用程序时,它不会覆盖Windows任务栏的空间,尽管最后一个是隐藏的。
I found this但它不起作用。我无法找到关于wince的例子。 我有 FormBorderStyle =无, WindowsState =最大化
SOLUTION:
我找到了一种方法。一个重要的提示是 WindowState = Normal (我花了一些时间才发现这个问题)。如果您有 WindowState = Maximized ,则无法将Form的高度设置为最大显示高度。
我写了这段代码来探测它并且它工作正常。是一个带有两个按钮的表单:button1(全屏)和button2(恢复默认屏幕)
public partial class Form1 : Form
{
public Form1(){
InitializeComponent();
}
[DllImport("Coredll")]
internal static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("coredll.dll")]
internal static extern bool EnableWindow(IntPtr hwnd, Boolean bEnable);
[DllImport("coredll.dll")]
private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
public static bool EnableTaskBar(Boolean enable)
{
IntPtr hwnd;
hwnd = FindWindow("HHTaskBar", "");
if (enable) SetHHTaskBar();
else HideHHTaskBar();
return EnableWindow(hwnd, enable);
}
public static void HideHHTaskBar()
{
IntPtr iptrTB = FindWindow("HHTaskBar", null);
MoveWindow(iptrTB, 0, Screen.PrimaryScreen.Bounds.Height,
Screen.PrimaryScreen.Bounds.Width, 26, true);
}
public static void SetHHTaskBar()
{
IntPtr iptrTB = FindWindow("HHTaskBar", null);
MoveWindow(iptrTB, 0, 294,
Screen.PrimaryScreen.Bounds.Width, 26, true);
}
private void button1_Click(object sender, EventArgs e)
{
EnableTaskBar(false);
this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Height = Screen.PrimaryScreen.Bounds.Height;
this.Left = 0;
this.Top = 0;
}
private void button2_Click(object sender, EventArgs e)
{
EnableTaskBar(true);
}
}
希望它可以帮助其他人解决同样的问题!
感谢您的帮助!
答案 0 :(得分:8)
隐藏任务栏后,明确设置表单的大小和位置:
myForm.Width = Screen.PrimaryScreen.Bounds.Width;
myForm.Height = Screen.PrimaryScreen.Bounds.Height;
myForm.Left = 0;
myForm.Top = 0;
答案 1 :(得分:0)
我总是在需要时使用SHFullScreen来实现这一目标。您需要使用PInvoke来调用它。