原文地址:https://wpf.2000things.com/2012/12/13/711-changing-the-mouse-cursor-while-dragging/

在WPF拖拽的过程中,通过GiveFeedback 事件可以更改整个过程中鼠标的样式。在事件中,我们可以通过GiveFeedbackEventArgs.Effects 属性来判断当前位置的拖动效果,从而设置鼠标的样式。

下面的例子中,当拖动的效果为Copy的时候,我们改变鼠标为一个手的样式,来表示允许拖动数据。

<StackPanel Orientation="Vertical" HorizontalAlignment="Center" Margin="45"><Label Content="Data to drag" Background="AliceBlue" Padding="15,10" Margin="10"MouseLeftButtonDown="Label_MouseLeftButtonDown"GiveFeedback="Label_GiveFeedback"/><Label Content="Drag to here" Background="MediumSpringGreen" Padding="15,10" Margin="10"AllowDrop="True" Drop="Label_Drop"/>
</StackPanel>
private void Label_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{DataObject data = new DataObject(DataFormats.Text, ((Label)e.Source).Content);DragDrop.DoDragDrop((DependencyObject)e.Source, data, DragDropEffects.Copy);
}private void Label_Drop(object sender, DragEventArgs e)
{((Label)e.Source).Content = (string)e.Data.GetData(DataFormats.Text);
}private void Label_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{if (e.Effects == DragDropEffects.Copy){e.UseDefaultCursors = false;Mouse.SetCursor(Cursors.Hand);}elsee.UseDefaultCursors = true;e.Handled = true;
}

上面的最后一个函数中如果Effects 属性为Copy ,我们将鼠标设置为Cursors.Hand ,其它情况下为默认样式。


******************************************译者注*****************************************

GiveFeedbackEventArgs.Effects 属性是一个DragDropEffects 类型的枚举,它有以下几种枚举值:

  None - 放置目标不接受该数据。

Copy - 将拖动源中的数据复制到放置目标。

Move - 将拖动源的数据移动到放置目标。

Link - 将拖动源中的数据链接到放置目标。

Scroll - 拖动时可以滚动目标,以定位在目标中当前不可见的某个放置位置。

All - Copy、Link、Move 和 Scroll 效果的组合。



#711 – 在拖拽的过程中改变鼠标样式(Changing the Mouse Cursor While Dragging)相关推荐

  1. WPF拖拽过程中修改鼠标指针属性

    在WPF中鼠标拖拽时,指针默认是个圆圈(呵呵,有点难看),网上找了一圈没有找到好的方法,在此把我的解决过程写下: 在拖拽过程中使用到了DragDrop类,类中DoDragDrop方法为启动拖拽操作,而 ...

  2. 原生JS实现拖拽进度条、滚动鼠标显示相应的内容

    今天要分享的是运用原生JS实现拖拽进度条.滚动鼠标显示相应的内容,实现效果如下: 以下是代码实现,欢迎大家复制粘贴. <!DOCTYPE html> <html><hea ...

  3. JavaScript中改变鼠标指针样式的方法

    JavaScript中改变鼠标指针样式的方法 在js中我们可以通过style对象的cursor属性来设置鼠标指针的样式,例 var body = document.querySelector(&quo ...

  4. 游戏过程中的鼠标是否为真人操作的检测(集成学习、GAN网络)

    目录 说明 问题的背景 外挂的猫鼠游戏 目前对于鼠标移动轨迹的机器人判别的研究 数据预处理 起点的平移 旋转变换 一种保留原始图像特征的归一化方式 系统模型设计 生成对抗网络 集成判别器 判别器D1 ...

  5. CSS改变鼠标样式(图片)

    如果你想让你的网站看起来更酷炫,可以改变鼠标样式,用你喜欢的图片来代替. 下面就来介绍下步骤方法: 首页把鼠标图标格式转换成.ico格式,大小为32*32 转换格式网址为:https://www.ea ...

  6. js鼠标移动到某个元素上改变鼠标样式,如悬浮小手、禁用鼠标、等待...

    js鼠标移动到某个元素上改变鼠标样式:则在这个元素的样式里加上 cursor:(你想改的样式). eg:  <table border="0"  style="cu ...

  7. vuedraggable自由拖拽html,vue中draggable拖拽列表的使用

    1.安装 npm install vuedraggable 或者使用镜像安装 cnpm install vuedraggable 2.使用 首先在使用的组件中引入 import draggable f ...

  8. Element UI表格拖拽(vue中) —— 行拖拽、列拖拽

    目录 安装依赖 vuedraggable 实现拖拽的要点 行拖拽要点 列拖拽要点 完整范例代码 安装依赖 vuedraggable 安装  vuedraggable 的同时,会自动安装 sortabl ...

  9. 【原创纯手打】如何用VUE在拖拽小框中同步更换壁纸(附代码)

    先看效果图 先安装vue-drag-resize插件,如果不安装插件,我们写鼠标拖拽就会相对麻烦一些 cnpm install --save vue-drag-resize 然后在main.js中加入 ...

最新文章

  1. 我认识Linux的小羞愧历史
  2. JQuery(选择器)
  3. Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析
  4. shell实战训练营Day14
  5. form表单属性名相同java_form表单提交 list对象给Java 后台结合
  6. 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦
  7. ajax 请求struts1,jquery ajax +struts1.3
  8. Tellico-经管你的收藏品
  9. 像写C#一样编写java代码
  10. 个人发卡网-轻量版-可自定义接口
  11. fsearch:适用于linux的快速查找软件(类似everything)安装教程
  12. 《汉字简体、繁体相互转换》 查看源代码
  13. 6.3深度优先遍历和广度优先遍历
  14. 更改OneDrive网页版OneNote笔记使用桌面应用打开时的默认应用
  15. CDlinux wifi密码破解(pin码枚举)
  16. C语言RLE压缩解压算法(西电C程序作业4)
  17. 办公室网络还能这么搭建?从入门到精通,看这里
  18. 最系统的网站优化推广大全
  19. 【8.6】代码源 - 【前缀集】【矩阵游戏】【谁才是最终赢家?】【放置多米诺骨牌】
  20. PHP获取系统时间的方法(毫秒数)

热门文章

  1. BigInteger实际用法
  2. 这 10 种 MySQL 经典错误案例,99% 的程序员一定遇到过!
  3. 2023最新IDEA安装以及使用教程
  4. 纯css美化单选与复选框
  5. python下载b站视频_【python】抖音无水印视频下载和b站视频下载
  6. 单片机实现LED呼吸灯功能
  7. 分支语句:if、switch、while、do...while、fot
  8. 2019年11月计算机考试,重庆信息技术职业学院--[考试中心]关于2019年11月全国信息化计算机应用技术水平认证考试CCAT(1905期)报名的通知...
  9. ios马甲包上架(本人经历)
  10. 树莓派 学习编程_为什么要学习在树莓派上编程