Yuan天空
Yuan天空
  • 我的主页
  • 博客随笔
  • 软件作品
    • TK精灵(进程守护)
    • 远程运维助手
    • DicomStoreSCU
    • TKOCR(离线OCR)
    • 更多...
  • 学习资源
  • 网址收藏
  • HTML模板
专注.NET开发技术领域
  1. 主页
  2. 博客
  3. 发布页

WPF实现程序窗体自定义拖拽

WPF自定义标题栏自定义拖拽
编程开发 2018-10-25 229
贴个广告
C# .NET WPF UI界面控件库源码|控件源码|
Loading...
C#控件/wpf实例/WPF源码/xaml源文件/Demo程序
Loading...
博客正文

WPF如何实现自定义拖拽

WPF类似于WEB页面布局的优点是winForm无法具备的,通过它灵活的布局,样式的添加,可以制作出很炫的界面 ;

WPF怎么美化?WPF默认的窗口标题栏对于一些设计来说十分不合时宜,所以一般都会去掉替换上自有的设计,去掉标题栏的方法很多也分简单。不过,这样一来又会有另外一个问题,即去掉了标题栏后,没有了原有的拖拽和按住缩放大小的功能。 然而这两个功能大多数时候都是刚需,所以只能使用其他方式为自己替换的标题栏添加上这两个功能。

首先给模拟的标题栏添加 鼠标移动 和 鼠标点击 这两个事件

MouseMove="ResizePressed"  
MouseDown="ResizePressed"

后台添加以下代码

#region 初始化窗体可以缩放大小  
  
private const int WM_SYSCOMMAND = 0x112;  
private HwndSource _HwndSource;  
private Dictionary<ResizeDirection, Cursor> cursors = new Dictionary<ResizeDirection, Cursor>  
{  
	{ ResizeDirection.BottomRight, Cursors.SizeNWSE },  
};  
private enum ResizeDirection  
{  
	BottomRight = 8,  
}  
[DllImport( "user32.dll", CharSet = CharSet.Auto )]  
private static extern IntPtr SendMessage( IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam );  
  
private void ResizePressed( object sender, MouseEventArgs e )  
{  
	FrameworkElement element = sender as FrameworkElement;  
	ResizeDirection	 direction = (ResizeDirection) Enum.Parse(typeof(ResizeDirection), element.Name.Replace( "Resize", "" ));  
	ResizeBottomRight.Cursor = cursors[direction];  
	if (e.LeftButton == MouseButtonState.Pressed)  
		ResizeWindow(direction);  
}  
  
  
private void ResizeWindow( ResizeDirection direction )  
{  
	SendMessage( _HwndSource.Handle, WM_SYSCOMMAND, (IntPtr) (61440 + direction), IntPtr.Zero );  
}  
  
#endregion
同类文章
WPF GIF图片添加水印 GIF图片水印工具软件源码
Loading...
WPF GIF图片添加水印 GIF图片水印工具软件源码
 WPF Rectangle实现 虚线边框矩形 超简单
Loading...
WPF Rectangle实现 虚线边框矩形 超简单
WPF 数据转换器 IValueConverter例子
Loading...
WPF 数据转换器 IValueConverter例子
WPF 使用MahApps.Metro
Loading...
WPF 使用MahApps.Metro
WPF 中RichTextBox 控件FlowDocument设置行距
Loading...
WPF 中RichTextBox 控件FlowDocument设置行距
WPF文本框全选复制时被自动截断只能复制第一行文本
Loading...
WPF文本框全选复制时被自动截断只能复制第一行文本
.NET环境下System.Drawing.Color对应的颜色值RGB对照表
Loading...
.NET环境下System.Drawing.Color对应的颜色值RGB对照表
WPF中某一个控件绑定其他指定UI控件的属性值
Loading...
WPF中某一个控件绑定其他指定UI控件的属性值
WPF窗体实现靠近窗体边缘自动贴边展示效果代码实现
Loading...
WPF窗体实现靠近窗体边缘自动贴边展示效果代码实现
WPF文本框控件RichTextBox实现MVVM绑定数据源
Loading...
WPF文本框控件RichTextBox实现MVVM绑定数据源
WPF前端XAML页面实现灰白相间马赛克背景效果
Loading...
WPF前端XAML页面实现灰白相间马赛克背景效果
WPF桌面程序开发怎么实现鼠标窗体穿透点击桌面
Loading...
WPF桌面程序开发怎么实现鼠标窗体穿透点击桌面
问题反馈/学习建议
1. 文明上网,理性表达,营造舒适的学习氛围
2. 请不要反馈提交与本页主题无关内容
学习资源
C#+WPF实现模仿实现的网易云音乐客户端源码
Loading...
C#+WPF实现模仿实现的网易云音乐客户端源码
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
Loading...
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
WPF实现读取USB摄像头实时视频展示以及导出实时截图的C#源码例子
Loading...
WPF实现读取USB摄像头实时视频展示以及导出实时截图的C#源码例子
wpf实现大屏幕弹幕播放效果特效源码新手可参考下.rar
Loading...
wpf实现大屏幕弹幕播放效果特效源码新手可参考下.rar
WPF实现的自定义工作大日历排班Calendar控件模板的例子源码
Loading...
WPF实现的自定义工作大日历排班Calendar控件模板的例子源码
标题目录
  • WPF如何实现自定义拖拽