wpf窗口禁止最大化但允许调整大小

摘要:
在wpf中,可以通过属性ResizeMode设置窗口最大化禁止。然而,ResizeMode的问题是,如果ResizeMode设置为NoResize,则可以禁止最大化,但同时不能拖动以调整大小。这种效果可以通过以下方法实现,这些方法可以通过win32API设置:所需的API函数:[DllImport(“user32.dll”,EntryPoint=“GetWindowLong”)]publ

wpf中窗口禁止最大化可以通过属性ResizeMode来设置,但是ResizeMode有一个问题就是如果ResizeMode设置为NoResize的话,是可以禁止最大化的,但是这样同时也就不能拖动调整大小了,通过如下方法可以达到这个效果,通过win32 API来设置:

需要用到的API函数:

[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);

以下函数是具体的设置函数:

/// <summary>
/// 是否禁止最大化, 允许拖动
/// </summary>
/// <param name="isDisable">True:禁止  False:允许</param>
private void DisableMaxmizebox(bool isDisable)
{
int GWL_STYLE = -16;
int WS_MAXIMIZEBOX = 0x00010000;
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);
}
else
{
nStyle |= WS_MAXIMIZEBOX;
}

SetWindowLong(handle, GWL_STYLE, nStyle);
SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED);
}

说明:文章原文出自:http://www.cnblogs.com/dougua/archive/2007/07/03/804035.html

免责声明:文章转载自《wpf窗口禁止最大化但允许调整大小》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA 内存详解 (理解 JVM 如何使用 Windows 和 Linux 上的本机内存)ubuntu 重启命令,ubuntu 重启网卡方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效,子控件拦截父控件滚动效果解决办法

注册子控件的PreviewMouseWheel,然后在滚动的时候设置控件的 IsHitTestVisible = false,因为这个参数设为false之后子控件里面的TextBox,CheckBox会失效,所以在停止滚动后要把参数设回来。代码如下 private void girdOrder_PreviewMouseWheel(object sende...

Prism完成的一个WPF项目

Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 终极篇 本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结。 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点; 中级篇主要针对WPF布局与MaterialDesig...

WPF/Silverlight HierarchicalDataTemplate 模版的使用

上一篇 对Wpf/Silverlight Template 进行了总结,本篇继续上一篇,主要是介绍 HierarchicalDataTemplate 的使用方法。HierarchicalDataTemplate 继承于DataTemplate,被称之为"层级式数据模板",主要是应用层级比较明显数据集合,其典型的应用就是对TreeView控件进行数据绑定,接...

WPF简介

  要赢得世界,必须在恰当的时间做出恰当的事。这一点,微软做到了。历经微软 DOS,Win 31, Windows 95, Windows 98, Windows 2000, Windows XP, 一路走来,一次比一次热闹,一个比一个精彩、炫丽。Windows Vista的宣传更是轰轰烈烈,喧嚣日上。初见Windows Vista,都会被它的酷炫界面所...

C/S C# WPF锐浪报表教程

前言:锐浪报表是一种中国式报表的报表开发工具。博主使用锐浪报表有一段时间了,积累了一些经验希望能帮助你快速掌握并使用 第一章:集成项目 首先我们先去锐浪报表官网下载并安装锐浪报表。 创建WPF应用程序。(C/S端使用锐浪报表基本都一样) 添加锐浪报表的引用,在资源管理器目录中找到引用并右键,点击添加引用。 在引用管理器左侧目录中展开COM并找到Gri...

WPF 打开文件 打开路径对话框

WPF调用WinForm中的 OpenFileDialog 和 FolderBrowserDialog 来实现响应的功能 OpenFileDialog openFileDialog = newOpenFileDialog(); openFileDialog.Title = "选择文件"; openFileD...