WPF 去掉最大化最小化的方法

来源:互联网 发布:mac系统怎么装虚拟机 编辑:程序博客网 时间:2024/05/08 20:43

说明:俺是WPF初学者,WPF里面的文字,都是我的学习笔记,里面借鉴了前辈们的方法。

主题:WPF 去掉最大化最小化的方法

基础知识: WPF中默认窗口框架的外观,主要取决于IconTitleWindowsStyleResizeMode等属性。

  Icon 指定窗口的图标;

  Title 指定窗口的标题;

  WindowStyle 指定窗口样式,有4个取值:

    None,仅工作区可见 - 该标题栏和边框不会显示。;(当ResizeMode属性为NoResize时,仅剩下窗口核心。)

    SingleBorderWindow,具有单个边框的窗口。这是默认值;

    ThreeDBorderWindow,具有3-D边框的窗口

              ToolWindow固定工具窗口。

       ResizeMode 是指定大小调节样式,有4个取值:

    NoResize,不可调节,同时没有最大最小按钮;

    CanMinimize,不可调节。但可以最小化;(此时最大化按钮不可用)

    CanResize,可调节【默认】;

    CanResizeWithGrid,可根据网格调节;(窗口右下脚显示可调节网格)

方式 ①、设置窗体的ResizeMode属性          ,CanMinimize值只显示最小化 和 关闭 按钮。

方式 ②、引用JimFire的方法 原文地址 :http://blog.csdn.net/JimFire/article/details/6696905

[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
        public static extern int GetWindowLong(IntPtr hwnd, int nIndex);
        [DllImport("user32.dll", EntryPoint = "SetWindowLong")]
        public static extern int SetWindowLong(IntPtr hMenu, int nIndex, int dwNewLong);
        [DllImport("user32.dll")]
        private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);

 

private void DisableMaxmizebox(bool isDisable)
        {
            int GWL_STYLE = -16;
            int WS_MAXIMIZEBOX = 0x00010000;
            int WS_MINIMIZEBOX = 0x00020000;
            int SWP_NOSIZE = 0x0001;
            int SWP_NOMOVE = 0x0002;
            int SWP_FRAMECHANGED = 0x0020;
            IntPtr handle = new WindowInteropHelper(this).Handle;
            int nStyle = GetWindowLong(handle, GWL_STYLE);
            if (isDisable)
            {
                nStyle &= ~(WS_MAXIMIZEBOX);
                nStyle &= ~(WS_MINIMIZEBOX);
            }
            else
            {
                nStyle |= WS_MAXIMIZEBOX;
                nStyle |= WS_MINIMIZEBOX;
            }
            SetWindowLong(handle, GWL_STYLE, nStyle);
            SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED);
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DisableMaxmizebox(true);
        }
0 0
原创粉丝点击