qq_32431163 2022-07-06 09:47 采纳率: 30%
浏览 43
已结题

winform练习遇到的一个问题

在写项目练习
窗体上有个label
既想实现 按住label拖拽移动整个窗体
又想实现 label单击后执行某个方法

拖拽是通过label的mousedown事件进行的
但是在mousedown里执行formDrag()方法后mouseup,mouseclick,click事件都没反应了

代码如下

  1. private void label1_MouseDown(object sender, MouseEventArgs e)
  2. {
  3. Console.WriteLine("MouseDown");
  4. formDrag(this.Handle);//窗体拖拽
  5. }
  6. private void label1_Click(object sender, EventArgs e)
  7. { //没反应
  8. Console.WriteLine("Click");
  9. anotherWork();//单击执行的某个方法
  10. }
  11. private void label1_MouseClick(object sender, MouseEventArgs e)
  12. { //没反应
  13. Console.WriteLine("MouseClick");
  14. }
  15. private void label1_MouseUp(object sender, MouseEventArgs e)
  16. { //没反应
  17. Console.WriteLine("MouseUp");
  18. }
  19. //////拖拽//////
  20. [DllImport("user32.dll")]
  21. public static extern bool ReleaseCapture();
  22. [DllImport("user32.dll")]
  23. public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
  24. public const int WM_SYSCOMMAND = 0x0112;
  25. public const int SC_MOVE = 0xF010;
  26. public const int HTCAPTION = 0x0002;
  27. //拖动
  28. public static void formDrag(IntPtr intp)
  29. {
  30. //拖动窗体
  31. ReleaseCapture();
  32. SendMessage(intp, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
  33. }

不知道这是什么问题,或者说有其他实现功能的办法

展开全部

  • 写回答

2条回答 默认 最新

查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月14日
  • 已采纳回答 7月7日
  • 修改了问题 7月6日
  • 创建了问题 7月6日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部