2010-11-12 90 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; 

這是形式的名稱。

相關問題