2016-10-20 5 views
2

я после этой статьи, http://www.vesic.org/english/blog-eng/net/full-screen-maximize/весь экран окна формы, но с заголовком

Это делает мои окна формы для перехода на полный экран, но она также скрывает строку заголовка.

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

"targetForm.FormBorderStyle = FormBorderStyle.None;" скрывает мою строку заголовка, но удаление этой панели задач показывает, так или иначе, чтобы скрыть панель задач и сохранить строку заголовка в приложении Windows? Благодаря

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

namespace myClasses 
{ 

    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 = FormWindowState.Normal; 
     private FormBorderStyle brdStyle = FormBorderStyle.Sizable; 
     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; 
     } 
    } 
} 
+0

Вы имеете в виду «Форма экрана с полным экраном, но с панелью задач»? (у вас заголовок Q.) – Yogi

+0

Без панели задач, но с панелью инструментов –

ответ

3

Вы можете установить его в FormBorderStyle.FixedToolWindow;, чем только панель задач скрыта.

+0

Это показывает заголовок, но удивительно кнопки максимизации и уменьшения не отображаются на заголовке, тогда как закрытие присутствует. Как вернуть эту кнопку –

+0

targetForm.MinimizeBox = true; и targetForm.MaximizeBox = true; не работает –

+0

Да, это потому, что у вас есть фиксированное окно. Если вы позволите пользователю изменить размер. Вы вернете кнопки. К сожалению, для вашего разыскиваемого поведения нет FormBorderStyle. Возможно, вам придется написать его самостоятельно. –

Смежные вопросы