控件拖动问题?百分放送,请各路高手帮忙!!!

Myth_NiuNiu 2009-05-31 08:37:17
我想实现的是:自定义控件拖动到主界面上,并可以做连线,然后将控件和线的坐标点保存到库中.(如:工作流中的自定义控件那样,CS下的)
问题:再拖动控件时,位置坐标不是我付给它的坐标,控件自动发生位置移动,请问为什么?
代码:
start[c1] = new Start(); //自定义控件
start[c1].Location = new System.Drawing.Point(e.X - 80, e.Y);//设定位置,e.x,e.y指的是鼠标的位置
if ((start[c1].Location.X < panel2.Location.X - 105) || (start[c1].Location.Y < panel2.Location.Y - 35))
{
return; //对创建节点位置的判断,在面板panel2内才可以创建
}
start[c1].Size = new System.Drawing.Size(53, 48);
……
Controls.Add(start[c1]);//添加控件
panel2.Controls.Add(start[c1]);//添加控件

说明:在拖动控件,移动到面板上鼠标松开后,控件的位置会跳动一下,就变成别的坐标点了,请问各位高手,怎么解决,小弟不胜感激!!!
...全文
110 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
upcqiyou 2011-10-02
  • 打赏
  • 举报
回复
Myth_NiuNiu:

源程序能佛给我 发一份:qiy898@163.com,谢谢!
dzpzds 2009-06-01
  • 打赏
  • 举报
回复
不懂 顶
Myth_NiuNiu 2009-06-01
  • 打赏
  • 举报
回复
有人做过这方面的吗?指点下,我先试试转换坐标的做法?
奇怪了,为什么有的机子就可以呢?
uncleson88 2009-06-01
  • 打赏
  • 举报
回复
感觉拖到面板上后,应该坐标应该是panel上的坐标,而拖入之前应该是窗体(form)的坐标,screentoclient方法MS是转换的屏幕与鼠标的坐标,我觉得用鼠标坐标与panel的坐标的相对坐标差值可能会好一些.
demonccgg 2009-06-01
  • 打赏
  • 举报
回复
同意2楼说的
shui8iuhs 2009-06-01
  • 打赏
  • 举报
回复
没做过,不过感觉楼上的说的是正解。
love_幸运儿 2009-06-01
  • 打赏
  • 举报
回复
up
happyer_longlong 2009-06-01
  • 打赏
  • 举报
回复
试试 坐标转换
point f=PointToClient(new Point( start[c1].Size ));
zgke 2009-06-01
  • 打赏
  • 举报
回复
niitnanfeng 2009-06-01
  • 打赏
  • 举报
回复
没做过。
Myth_NiuNiu 2009-06-01
  • 打赏
  • 举报
回复
2楼:如果是坐标没转换的话,怎么有些机子可以呢?就不会发生错位的情况!
cwp9868cws 2009-05-31
  • 打赏
  • 举报
回复
好复杂顶一个
yagebu1983 2009-05-31
  • 打赏
  • 举报
回复
ServerLight..
VML...
修改一下昵称 2009-05-31
  • 打赏
  • 举报
回复
帮顶...
光宇广贞 2009-05-31
  • 打赏
  • 举报
回复
start[c1].Location = new System.Drawing.Point(e.X - 80, e.Y);//设定位置,e.x,e.y指的是鼠标的位置

你控件的location是针对他所在的容器说的。

而你的鼠标可是针对整个屏幕说的。

所以才会发生你的那些问题……因为参考坐标系是不一样的,你没有做坐标系变换,所以会发生坐标错误。

所以,你需要一个screentoclient 和 clienttoscreen方法(应该是叫这两个名儿吧,你可以找得到)
CqCoder 2009-05-31
  • 打赏
  • 举报
回复
鼠标移动移动事件

考虑 MOUSELEAVE等事件·

110,538

社区成员

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

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

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