WPF下实现拖动任意地方都可以拖动窗口

WPF系列教程(十一):鼠标操作 鼠标操作的四个事件: MouseEnter:鼠标移动到元素时触发事件 MouseLeave:鼠标离开元素时触发事件 PreviewMouseMove:隧道路由事件,鼠标移动时触发MouseEventArgs事件 MouseMove:冒泡路由事件,鼠标移动时触发MouseEventArgs事件 一个对象: MouseEventArgs:触发事件 举例,在WPF项目中,捕获鼠标的位置。当鼠标在上方蓝色矩形中移动时,在最下方TextBlock中显示鼠标位置。 ... 阅读详情

首先在xaml中添加事件

<Window PreviewMouseLeftButtonDown="Window_PreviewMouseLeftButtonDown"
        PreviewMouseMove="Window_PreviewMouseMove"
        PreviewMouseLeftButtonUp="Window_PreviewMouseLeftButtonUp"/>

然后脚本输入

Point _pressedPosition;
bool _isDragMoved = false;

#region 窗口移动

private void Window_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    _pressedPosition = e.GetPosition(this);
}

private void Window_PreviewMouseMove(object sender, MouseEventArgs e)
{
    if (Mouse.LeftButton == MouseButtonState.Pressed && _pressedPosition != e.GetPosition(this))
    {
        _isDragMoved = true;
        DragMove();
    }
}

private void Window_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (_isDragMoved)
    {
        _isDragMoved = false;
        e.Handled = true;
    }
}

#endregion

效果图:
请添加图片描述

参考文章:https://blog.youkuaiyun.com/u013113678/article/details/121071628

WPF实现外部拖动图片到窗体或者用户控件、并显示图片  设置窗体的 AllowDrop="True" DragEnter="Form1_DragEnter" #region "在用鼠标将某项拖放到区域时事件" private void Form1_DragEnter(object sender, DragEventArgs e) { // this.AllowDrop = true; ... 阅读详情

相关推荐

WPF 透明窗口可以调整尺寸(通过拖拽窗口边缘)

WPF 透明窗口可以调整尺寸(通过拖拽窗口边缘) 本文遵循 CC 4.0 BY-SA 版权协议 作者:絮大王 通过这篇文章,我们可以实现: 让WPF的透明窗口可以通过拖拽窗口的边缘,自由的调整尺寸。 我们可以通过拖拽窗口的上方,来移动窗口。 我们可以禁止窗口拖到屏幕边缘时自动最大化。 还可以等比例的改变窗口的大小。 还可以等比例的改变窗口中控件的大小 ...

xu1295921025的博客 2695

c# wpf 实现窗口任意区域点击拖动

点击窗口任意区域可移动功能,在一些业务场景中会使用到,比如工具条或者球形状的窗口等。在wpf要实现此功能简单形式还是比较容易的,但是有一些细节需要专门处理,比如与按钮的点击事件冲突问题,解决事件冲突问题后拖动的灵敏度,可复用性等。

codeofcc的博客 1万+

如何使WPF在窗口外部区域可拖动缩放

今天来和大家聊如何使WPF在窗口外部区域可拖动缩放。 问题来源 对于WPF窗口来说,默认的可拖动缩放区域较小。 在某些应用场景下我们期望能够设置一个较大的可拖动的缩放区域。 自定义WindowChrome 有同学马上想到了,通过WindowChrome的ResizeBorderThickness属性进行设置 比如下面的方式 <Window x:Class="WpfApp2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2

黄腾霄的博客 1226

[WPF] Behavior实现鼠标拖拽窗口

Mvvm开发模式下,实现鼠标左键拖拽窗口操作

qq_45689779的博客 1574

在WPF中的Canvas上实现控件的拖动、缩放

如题,项目中需要实现使用鼠标拖动、缩放一个矩形框,WPF中没有现成的,那就自己造一个轮子:)    造轮子前先看看Windows自带的画图工具中是怎样做的,如下图:      在被拖动的矩形框四周有9个小框,可以从不同方向拖动来放大缩小矩形框,另外需要注意的是,还有一个框,就是图中虚线的矩形框,这个框,是用来拖动目标控件的;我们要做的,就是模仿画图中的做法,在自定义控件中显示10个框,然后根

Yuande的博客 1万+

C# WPF窗口任意区域拖动实现:原理、方案与实战避坑指南

在桌面应用开发中,窗口交互是用户体验的核心环节。传统窗口拖动依赖于系统标题栏,其原理是通过处理Windows消息(如WM_NCLBUTTONDOWN)来触发系统级的窗口移动操作。这一机制为应用提供了基础的拖拽功能,但在追求极致界面设计的今天,其技术价值受到挑战。随着无边框窗口、自定义标题栏和异形窗口设计的普及,开发者需要在非客户区实现流畅的拖动交互,这直接关系到应用的视觉统一性和操作沉浸感。在游戏启动器、媒体播放器、工业控制面板等应用场景中,实现任意区域拖动已成为提升产品专业度的关键技术。本文聚焦于WPF框

weixin_33857679的博客 379

C# wpf 实现任意控件拖动

前言 在《C# wpf 实现Grid内控件拖动》和《C# wpf 实现Canvas内控件拖动》实现了两种容器内部控件的拖动,所以拖动功能只能局限于两种容器中使用。其实还有一种方法实现拖动,任意控件都可以拖动。 一、如何实现? 1.注册鼠标事件 拖动的控件需要注册3个鼠标事件分别是,鼠标按下、鼠标移动、鼠标弹起。 以Button为例: <Button PreviewMouseDown="Button_MouseDown" PreviewMouseMove="Button_Mo

codeofcc的博客 1万+

WPF实现鼠标拖动框选功能

本实例主要是使用WPF实现拖动鼠标画出矩形框同时框选控件的功能,效果如下:

dnazhd的博客 5335

C# wpf 附加属性实现任意控件(包括窗口)拖动

系列文章目录 第一章 Grid内控件拖动 第二章 Canvas内控件拖动 第三章 任意控件拖动 第四章 窗口拖动 第五章 附加属性任意控件拖动(本章) 文章目录系列文章目录前言一、如何实现?1.定义附加属性2.整合功能3.二、完整代码三、使用示例总结 前言 前面几章讲了控件拖动的几种方法,根据不同的布局可以有不同的拖动方式。本章主要讲的是利用附加属性对几种拖动方式进行封装,实现复用性,否则直接注册事件的方式在同界面多个控件中是几乎没有复用性的,实现起来很不方便。 提示:以下是本篇文章正文内容,下面

codeofcc的博客 4849

C# wpf 实现任意控件(包括窗口)更多拖动功能

上一章我们以及实现了任意控件统一的拖动功能,以及能够方便的给任意控件添加拖动了。开发过程中发现还是有些功能可以继续拓展的,比如cs代码中移动控件、响应事件后触发拖动、限制拖动范围等功能。

codeofcc的博客 2343

C# wpf 实现任意控件(包括窗口)更多调整大小功能

上一章我们已经实现了任意控件统一的拖动调整功能,能够方便的给任意控件设置拖动调整大小。开发过程中发现还是有些功能可以继续拓展的,比如cs代码触发拖动、自定义模板、交叉拖动、限制拖动范围等功能。有功能实现起来不算太容易,却很有实用价值。

codeofcc的博客 4584

C# wpf 附加属性实现任意控件拖动调整大小

系列文章目录 第一节 Grid内控件拖动 第二节 Canvas内控件拖动 第三节 任意控件拖动 第四节 窗口拖动 第五节 附加属性实现任意拖动(本节) 文章目录系列文章目录前言一、如何实现?1.定义附加属性2.整合功能3.关联功能二、完整代码三、使用示例1.拖动控件2.拖动窗口总结 前言 前面几章讲了控件拖动的几种方法,根据不同的布局可以有不同的拖动方式。本章主要讲的是利用附加属性对几种拖动方式进行封装,实现复用性,否则直接注册事件的方式在同界面多个控件中是几乎没有复用性的,实现起来很不方便。通过将上

codeofcc的博客 7519

WPF无边框窗口实现阴影、伸缩与拖动的完整实例

WPF提供了一个鲜为人知但非常有用的属性:。表示距离边缘8像素内的区域都算作“可拉伸区”。增大这个值可以显著提升易用性,尤其在触控设备上,手指更容易捕捉到边缘。回到拖动问题。DragMove()虽然简单,但其模态阻塞的特性让它难以胜任生产环境。我们需要更精细、更可控的解决方案。核心思路是:在MouseDown时记录初始坐标,在MouseMove时计算偏移量,然后手动更新窗口的Left和Top属性。// 获取相对于窗口的坐标// 计算新的屏幕坐标。

weixin_32005771的博客 949

C# wpf 无边框窗口实现拖动调整大小

文章目录前言一、如何实现?1.继承Adorner2.使用Thumb3.实现拖动逻辑三、完整代码四、使用示例总结 前言 在《C# wpf Grid中实现控件拖动调整大小》中我们实现了Grid中的控件动态调整大小,对于自定义的无边框窗口也可以使用类似的方式实现。虽然能查到的方案有通过Window Api的和通过WindowChrome实现的,一个是对系统有依赖还一个是依赖.net版本,这里提供一种相对轻量的实现方法。 一、如何实现? 1.继承Adorner 通过装饰器的方式添加8个方位拖动区域在窗口上,这

codeofcc的博客 5849

WPF 无边框拖动,并改变窗体大小

客户端无边框拖动,并可拉伸,压缩改变窗体大小。

WPF窗体的拖动

WPF窗体的拖动,简单的实现,仅供学习。

WPF无边框窗口鼠标拖动缩放大小

通常,我们会 通过AllowsTransparency=”True”、 WindowStyle=”None” 这两个属性将wpf窗口的边框去掉,由于边框没了,我们就不能通过鼠标指针悬停在某一边上拖动改变窗口的大小,此时若要能调整窗口大小,官方倒也提供了个属性:ResizeMode=”CanResizeWithGrip”,这么一设置,我们会发现窗口右下角多出一个三角标记,此时可以将鼠标指正悬停在这个标

leebin_20的博客 8023

[信号与系统]一阶与二阶连续时间系统和离散时间系统

定义:一阶连续时间系统由一阶线性常系数微分方程描述: dy(t)dt+ay(t)=bx(t) \frac{dy(t)}{dt} + a y(t) = b x(t) dtdy(t)​+ay(t)=bx(t)时间常数:时间常数 τ=1a\tau = \frac{1}{a}τ=a1​ 是系统响应速度的衡量指标。时间常数越小,系统响应越快。冲激响应:一阶系统的冲激响应是指数衰减或增长的形式。例如,对于一个单位冲激输入,响应为: h(t)=bae−at h(t) = \frac{b}{a} e^{-at} h(t)=

Andius的博客 2122
上一篇: WPF小知识 - 技巧合集
下一篇: Bat批处理知识点 - 技巧合集
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值