当前位置: 首页 > news >正文

支持控件drag和click

MouseDown 事件触发 DoDragDrop 拖拽操作时,Click 事件通常无效,因为 DoDragDrop 方法会捕获鼠标事件并等待拖拽操作完成。

有一个简单地思路解决这个问题

  1. MouseDow时,触发定时器,延迟100s
  2. 定时器到时后,进入drag状态
  3. 如果触发了MouseClick,取消步奏2的定时器
private Timer delayTimer;
private Control delayControl;delayTimer = new Timer();
delayTimer.Interval = 100; // 设置为 100 毫秒)
delayTimer.Enabled = false; // 初始状态为停用// 绑定定时器的 Tick 事件处理程序
delayTimer.Tick += new EventHandler(OnDelayTimerTick);private void Label1_MouseClick(object sender, MouseEventArgs e)
{//todo mouse点击后干点啥delayTimer.Stop();
}private void OnDelayTimerTick(object sender, EventArgs e)
{delayTimer.Stop();// 开始进入mouse drag流程var label = delayControl;label.DoDragDrop(label.Parent.Parent.Name + "." + delayControl.Name, DragDropEffects.Move);
}private void label_MouseDown(object sender, MouseEventArgs e)
{delayTimer.Start();delayControl = (Control)sender;
}

http://www.lryc.cn/news/208311.html

相关文章:

  • AIR101 LuatOS LVGL 显示多个标签例程
  • Istio实战(七)- Bookinfo 部署
  • 出差学小白知识No5:|Ubuntu上关联GitLab账号并下载项目(ssh key配置)
  • FL Studio21.2中文版多少钱?值得下载吗
  • 软考系统架构师知识点集锦三:软件架构设计
  • docker - window Docker Desktop升级
  • Element UI + Vue 新增和编辑共用表单校验无法清除问题(已解决)
  • FL Studio21最新中文汉化解锁版,2024怎么激活FL Studio
  • Mac怎么清理磁盘空间?释放Mac磁盘空间有效方法
  • 论文阅读(一)城市干道分段绿波协调控制模型研究
  • k8s 部署nginx前端
  • ClickHouse UDF 官方示例Example报错解决方案
  • eval()函数的用法,计算字符串中的值,模板字符串进行计算
  • leetcode第80题:删除有序数组中的重复项 II
  • 【Docker】Docker-Compose内置DNS负载均衡失效问题
  • [Python]Selenium-自动化测试
  • 高效管理文件夹名称:如何批量修改指定多样化的文件夹名称
  • c 读取音频协议WAV文件头(再生成wav文件)
  • Prompt设计与大语言模型微调
  • 修复VS2015没有代码提示的问题【已解决】
  • DeepSpeed: 大模型训练框架 | 京东云技术团队
  • 暄桐推荐|学书法的必读书目
  • 2023年赋能更多的人
  • 量子计算与量子密码(入门级)
  • 将安全作为首要目标 — Venus 的现状和前景展望
  • 『第七章』翩翩起舞的雨燕:顺序与并发执行
  • c语言进制的转换10进制转换16进制
  • js中的Formdata数据结构
  • Spring MVC 执行流程
  • JAVA毕业设计104—基于Java+Springboot+Vue的医院预约挂号小程序(源码+数据库)