如何实现[自定义控件]本身就能拖动,而不要额外的去写Mouse的事件......给点建议和思路

wxm3630478 2009-05-08 06:15:53
我要实现的功能是控件拖到Form窗体上就能拖动 而不要额外的去写Mouse事件代码

我现在的自定义控件上写了3个自定义事件OnMouseMove OnMouseDown OnMouseUp 3个事件


//Form窗体上实现3个事件
private Point mousePos;
private bool beginmove = false;
private void duxFeePanelCtl1_OnMouseDown(object sender, MouseEventArgs e)
{

beginmove = true;//开始移动
mousePos = new Point(e.X, e.Y);
}

private void duxFeePanelCtl1_OnMouseMove(object sender, MouseEventArgs e)
{
if (beginmove)
{
int diffx, diffy;
diffx = mousePos.X - e.X;
diffy = mousePos.Y - e.Y;
this.duxFeePanelCtl1.Location = new Point(duxFeePanelCtl1.Location.X - diffx, duxFeePanelCtl1.Location.Y - diffy);
}
}

private void duxFeePanelCtl1_OnMouseUp(object sender, MouseEventArgs e)
{
beginmove = false;//停止移动
}

/*能够实现控件的拖动,我现在想把这个方法封装在自定义控件里面,他本身就能实现拖动,而不要再添加他的Form窗体上去写Mouse事件*/
/*或者写一个什么样的类去实现下*/
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaichunkzj 2009-05-12
  • 打赏
  • 举报
回复
jkj
wxm3630478 2009-05-08
  • 打赏
  • 举报
回复
谢谢 hbxtlhx平民百姓 你的方法很好.........搞定了
wxm3630478 2009-05-08
  • 打赏
  • 举报
回复
我是要在程序运行以后,能够拖动.....现在能动了 还有一点点问题
光宇广贞 2009-05-08
  • 打赏
  • 举报
回复
不明白你想做什么……

在可视化编程的时候,控件本来就是可以拖动的……
运行时可拖动的话,你不得不在它所在的窗体内添加代码……

不明白……你需要什么……
辛鹤 2009-05-08
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Curry/archive/2009/04/16/1437092.html
http://www.wewill.cn/n695c7.aspx
http://blog.csdn.net/zhaojunpang/archive/2009/04/11/4065441.aspx
北京的雾霾天 2009-05-08
  • 打赏
  • 举报
回复
可参考如下代码:


public partial class Moveable : UserControl
{
private Point m_MousePoint;
private Point m_LastPoint;
public Moveable()
{
InitializeComponent();
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
this.m_LastPoint = this.Location;
this.m_MousePoint = this.PointToScreen(e.Location);
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button == MouseButtons.Left)
{
Point t = this.PointToScreen(e.Location);
Point l = this.m_LastPoint;

l.Offset(t.X - this.m_MousePoint.X, t.Y - this.m_MousePoint.Y);
this.Location = l;
}
}
}
zgke 2009-05-08
  • 打赏
  • 举报
回复
北京的雾霾天 2009-05-08
  • 打赏
  • 举报
回复
可以新建用户控件项目或一个类库项目,添加一个用户控件,然后为这个用户控件编写代码。

或者在你的项目里直接添加一个用户控件再编写代码。

110,547

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧