c# 鼠标在控件上拖动 移动窗体 移动窗口

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

#region 移动窗体 移动窗口

private
Point _mousePoint;

private
int topA(Control cc)

{

    if
(cc == null
|| cc == this) return
0;

    if
(cc.Parent == null
|| cc.Parent == this)

        return
cc.Top;

    else

        return
topA(cc.Parent) + cc.Top;

}

private
int leftA(Control cc)

{

    if
(cc == null
|| cc == this) return
0;

    if
(cc.Parent == null
|| cc.Parent == this)

        return
cc.Left;

    else

        return
leftA(cc.Parent) + cc.Left;

}

private
void labTitle_MouseDown(object
sender, MouseEventArgs e)

{

    Control cc = (Control)sender;

    if
(e.Button == MouseButtons.Left)

    {

        _mousePoint.X = e.X + leftA(cc);

        _mousePoint.Y = e.Y + topA(cc);

    }

}

private
void labTitle_MouseMove(object
sender, MouseEventArgs e)

{

    if
(e.Button == MouseButtons.Left)

    {

        Top = MousePosition.Y - _mousePoint.Y;

        Left = MousePosition.X - _mousePoint.X;

    }

}

#endregion

  

时间: 2024-10-30 16:42:10

c# 鼠标在控件上拖动 移动窗体 移动窗口的相关文章

Qt判断鼠标在控件上

QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝对位置进行换算,这里本文采用将鼠标绝对位置换算到控件上,示例代码如下: if(ui->groupBox->geometry().contains(this->mapFromGlobal(QCursor::pos()))) 原文地址:https://www.cnblogs.com/wangji

C#如何在panl控件上添加Form窗体

1. if (treeView1.SelectedNode.Text == "个人信息") { Form1 f4 = new Form1(); f4.TopLevel = false; panel1.Controls.Clear(); panel1.Controls.Add(f4); panel1.Show(); }

鼠标在某个控件上按下,然后离开后弹起,如何捕获这个鼠标弹起事件

默认情况下当鼠标移出控件外部后控件将获取不到WM_LBUTTONUP消息.以下通过SetCapture函数实现获取. SetCapture 函数功能: 该函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一个窗口捕获鼠标.如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口. LRESULT CALLBACK TestProc(HWND hwnd, UINT msg, WPARAM

VC/MFC 当鼠标移到控件上时显示提示信息

VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法. 一般用法步骤:  添加CToolTipCtrl成员变量 m_tt.  在父窗口中调用EnableToolTips(TRUE);  在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pW

如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主窗口有菜单.工具条等,想用鼠标绘图, 把鼠标轨迹映射到窗口部件上,这些问题. 其实最主要的是获得窗口部件的起始点相对主窗口的位置. 例如:在主窗口拖入一个QScrollArea 在其上放一个QLabel用来显示鼠标事件. 可以在ui对象结构上看到如下结构. 大家知道,我们可以用pos()来获得某一窗

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控件1只会触发MouseDown事件,而控件2则只会触发MouseUp事件,鼠标不在控件上他们就收不到对应的鼠标事件.同样的如果某个控件注册了MouseMove事件,当鼠标移动到控件外之后,控件将不会接收到MouseMove事件.但是在很多情况下我们需要在鼠标移动到控件外之后还能接收鼠标事件.例如按住

C# GDI在控件上绘图

本文以以在chart控件上和窗体上画矩形为例子 不多解释了,代码很简单. 还有一些童鞋要别的源码,给我发邮箱吧 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Syst

WPF之实现控件内容拖动

以下分别记录label.listbox.treeview三个控件的拖动示例: 1.对被拖动控件,实现拖动事件,主要是通过各种鼠标事件,实现DragDrop.DoDragDrop方法. 2.对于需要拖动到的目的控件,需要实现AllowDrop="True" Drop="TargetLabel_Drop" <Window.Resources> <Style TargetType="ListBoxItem"> <Event

显示鼠标单击控件次数

#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE hInst; /* The 'main' function of Win32 GUI programs: this is where execution starts */ int WINAPI WinMain(     HINSTANCE hInstance,     HINSTANCE hPrevInstance,