C# – 将控件移动到鼠标位置

C# – 将控件移动到鼠标位置,第1张

概述当用户单击并拖动控件时,我试图让控件跟随光标.问题是1.)控制器不会移动到鼠标的位置,以及2.)控制器在整个地方闪烁和飞行.我尝试了几种不同的方法,但到目前为止都失败了. 我试过了: protected override void OnMouseDown(MouseEventArgs e){ while (e.Button == System.Windows.Forms.MouseBu 当用户单击并拖动控件时,我试图让控件跟随光标.问题是1.)控制器不会移动到鼠标的位置,以及2.)控制器在整个地方闪烁和飞行.我尝试了几种不同的方法,但到目前为止都失败了.

我试过了:

protected overrIDe voID OnMouseDown(MouseEventArgs e){     while (e.button == System.windows.Forms.Mousebuttons.left)     {          this.Location = e.Location;     }}

protected overrIDe voID OnMouseMove(MouseEventArgs e){     while (e.button == System.windows.Forms.Mousebuttons.left)     {          this.Location = e.Location;      }}

但这些都不奏效.任何帮助表示赞赏,并提前感谢!

@H_404_24@解决方法 这是怎么做的:

private Point _Offset = Point.Empty;protected overrIDe voID MouseDown(object sender,MouseEventArgs e){    if (e.button == Mousebuttons.left)    {        _Offset = new Point(e.X,e.Y);    }}protected overrIDe voID MouseMove(object sender,MouseEventArgs e){    if (_Offset != Point.Empty)    {        Point newlocation = this.Location;        newlocation.X += e.X - _Offset.X;        newlocation.Y += e.Y - _Offset.Y;        this.Location = newlocation;     }}protected overrIDe voID MouseUp(object sender,MouseEventArgs e){    _Offset = Point.Empty;}

_Offset在这里用于两个目的:在最初点击鼠标时跟踪鼠标在控件上的位置,并跟踪鼠标按钮是否关闭(这样当鼠标按下时控件不会被拖动光标越过它而按钮没有按下).

你绝对不希望将此代码中的ifs切换为while,因为它会产生影响.

总结

以上是内存溢出为你收集整理的C# – 将控件移动到鼠标位置全部内容,希望文章能够帮你解决C# – 将控件移动到鼠标位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1222979.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存