2010-11-12 133 views

回答

12

没有特别的技巧是必要的。将FormBorderStyle属性设置为None,将WindowState设置为Maximized。

+3

值得一提的是,不需要任何“特殊技巧”来隐藏任务栏。 Windows认识到,像这样创建的窗口想要全屏显示,并将它们放在任务栏顶部。 – Nick 2010-11-12 19:55:47

+0

除非出现问题,否则如果将任务栏设置设置为“始终位于顶部”,则会隐藏应用程序。如果我理解OP要求的内容,他希望窗口能够真正实现全屏显示,并且覆盖所有显示器的房地产。 – 2010-11-12 19:58:07

+1

如何将任务栏设置为“始终位于顶部”?在Windows 7中找不到此选项... – Lars 2010-11-12 20:03:07

12

http://www.vesic.org/english/blog/winforms/full-screen-maximize/
例子:http://www.vesic.org/blog/upload/MaxWinForm.zip

/// <summary> 
/// Selected Win AI Function Calls 
/// </summary> 

public class WinApi 
{ 
    [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] 
    public static extern int GetSystemMetrics(int which); 

    [DllImport("user32.dll")] 
    public static extern void 
     SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, 
        int X, int Y, int width, int height, uint flags);   

    private const int SM_CXSCREEN = 0; 
    private const int SM_CYSCREEN = 1; 
    private static IntPtr HWND_TOP = IntPtr.Zero; 
    private const int SWP_SHOWWINDOW = 64; // 0x0040 

    public static int ScreenX 
    { 
     get { return GetSystemMetrics(SM_CXSCREEN);} 
    } 

    public static int ScreenY 
    { 
     get { return GetSystemMetrics(SM_CYSCREEN);} 
    } 

    public static void SetWinFullScreen(IntPtr hwnd) 
    { 
     SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW); 
    } 
} 

/// <summary> 
/// Class used to preserve/restore state of the form 
/// </summary> 
public class FormState 
{ 
    private FormWindowState winState; 
    private FormBorderStyle brdStyle; 
    private bool topMost; 
    private Rectangle bounds; 

    private bool IsMaximized = false; 

    public void Maximize(Form targetForm) 
    { 
     if (!IsMaximized) 
     { 
      IsMaximized = true; 
      Save(targetForm); 
      targetForm.WindowState = FormWindowState.Maximized; 
      targetForm.FormBorderStyle = FormBorderStyle.None; 
      targetForm.TopMost = true; 
      WinApi.SetWinFullScreen(targetForm.Handle); 
     } 
    } 

    public void Save(Form targetForm) 
    { 
     winState = targetForm.WindowState; 
     brdStyle = targetForm.FormBorderStyle; 
     topMost = targetForm.TopMost; 
     bounds = targetForm.Bounds; 
    } 

    public void Restore(Form targetForm) 
    { 
     targetForm.WindowState = winState; 
     targetForm.FormBorderStyle = brdStyle; 
     targetForm.TopMost = topMost; 
     targetForm.Bounds = bounds; 
     IsMaximized = false; 
    } 
} 
+6

得到来自“匿名”人的爱。 :) – 2010-11-12 20:08:27

+0

大概是因为你永远不希望有一个全屏应用程序始终在最前面...... – 2014-05-03 21:20:07

4

Kiosk mode是您要使用的搜索词。

form.MaximizeBox = false; 
form.MinimizeBox = false; 
form.TopMost = true; 
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
form.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
+6

当“边框”设置为“无”,没有必要禁用最大化和最小化框。当'BorderStyle'为'None'时,整个窗口标题被删除,包括最小化,最大化和关闭框。 – 2010-11-12 22:05:50

+0

很高兴知道,谢谢。 – Lars 2010-11-14 10:56:11

0

为了让你不得不做这样的事情全屏幕应用程序...

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

这是形式的名称。