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

编程开发
241
WPF
自定义标题栏
自定义拖拽

WPF如何实现自定义拖拽

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

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

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

MouseMove="ResizePressed"  
MouseDown="ResizePressed"

后台添加以下代码

#region 初始化窗体可以缩放大小  
  
private const int WM_SYSCOMMAND = 0x112;  
private HwndSource _HwndSource;  
private Dictionary cursors = new Dictionary  
{  
	{ 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 异步线程操作界面控件
WPF 数据转换器 IValueConverter例子
wpf、winform最大化被任务栏遮挡的解决办法
WPF窗体实现靠近窗体边缘自动贴边展示效果代码实现
WPF Page页面间在Frame中带参数跳转
.NET 5 WPF 如何开启控制台界面用于实时输出日志
 WPF Rectangle实现 虚线边框矩形 超简单
wpf调用文件目录打开目录选择对话框
Windows桌面开发优秀的WPF界面开源UI组件 MahApps.Metro
XP系统下运行.net framework 4.0程序出现如下异常
在.NET CORE\.NET 5 下WPF如何实现托盘图标功能
WPF Border 实现图片背景且圆角边框 背景不溢出
暂无相关内容...
wpf实现大屏幕弹幕播放效果特效源码新手可参考下.rar
WPF实现读取USB摄像头实时视频展示以及导出实时截图的C#源码例子
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
WPF实现的自定义工作大日历排班Calendar控件模板的例子源码
C#+WPF实现模仿实现的网易云音乐客户端源码
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删