怎么实现按下鼠标左键并拖动界面时,界面会跟着移动 一个简单界面,在按下鼠标左键并拖动界面时,界面会跟着移动。请问编程怎么实现呢。由于刚接触C#界面编程,不是很懂,恳请各位高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.baidu.com/s?wd=jquery+%E6%8B%96%E5%8A%A8&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=7680 这个很简单哦 楼主在窗体的事件里添加 private void Form1_MouseDown(object sender, MouseEventArgs e) { t = 1; x = e.Location.X; y = e.Location.Y; } private void Form1_MouseMove(object sender, MouseEventArgs e) { if(t==1) { Location = new Point(Location.X + (e.Location.X - x), Location.Y + (e.Location.Y - y)); } } private void Form1_MouseUp(object sender, MouseEventArgs e) { t = 0; } lz你是要在哪里实现这个效果 网页上和winform是不一样滴 35. private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { 36. thisIsMove = true; 37. //当鼠标点下时 记录想当前的状态 38. sx = MousePosition.X; 39. sy = MousePosition.Y; 40. l = this.Left; t = this.Top; 41. } 42. 43. private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { 44. if (thisIsMove) {//如果为true则移动窗体 45. //当前鼠标的位置与点下的是鼠标坐标的差值加上原来窗体的坐标就是现在移动的位置 46. this.Left = MousePosition.X - sx + l; 47. this.Top = MousePosition.Y - sy + t; 53. } 54. } 55. 56. private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { 57. thisIsMove = false; 58. } 直接把我原来写的弄过来了 貌似 5楼那个也不错、、、用的客户区的坐标来做的计算 我是用的屏幕坐标来做的计算 如果是针对windows的form,那么算是一个投机取巧的做法(虽然差一两行代码,但是问题不大)。可如果是picturebox等等,甚至是封闭曲线等等,这就不一样了。你拖动一个图形时,实际上应该拖着它从其它层后边穿越,而不能失去鼠标控制。 你直接创建个winform的程序 就用默认的Form1 直接生成--->运行生成的exe文件,完了直接拖动 就是你要的效果了吧 我是没有使用默认的Windos Form,所以没有放大、隐藏和关闭等按钮,但直接运行时拖不动界面。所以我在原来的界面上添加了面板,然后想通过编程来实现拖动面板,界面就能够随着移动。是你上面的那个程序吗? 但就是因为没有使用默认的Form,所以运行时不能拖动界面,想通过编程来解决这个问题。 呃、、、难道你不知道放一个pictureBox或者其他的控件放在窗体上面 拿来移动窗体用 ?、、、你非要在窗体上直接写代码 然后窗体的任何一个地方都可以拖动窗体 ?、、 c#程序总报尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 C# GDI+绘制文字换行问题 线程锁表问题,能解决吗? SQL Server2000 SP4中字符串过长的错误 C#中 TEXTBOX 自动换行的问题 C#中WINFORM繼承問題 关于多用户登陆,使用oracle序列自增长id的问题 进程计数已禁用怎么解决呀? 哪位大佬有空来谈一下objectspace是个什么东东? 请问哪儿有c#源码下载? C#可以做ie插件开发吗? DevExpress.XtraReports.UI.XRCheckBox控件
在窗体的事件里添加
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
t = 1;
x = e.Location.X;
y = e.Location.Y; } private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if(t==1)
{
Location = new Point(Location.X + (e.Location.X - x), Location.Y + (e.Location.Y - y));
}
} private void Form1_MouseUp(object sender, MouseEventArgs e)
{
t = 0;
}
35. private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
36. thisIsMove = true;
37. //当鼠标点下时 记录想当前的状态
38. sx = MousePosition.X;
39. sy = MousePosition.Y;
40. l = this.Left; t = this.Top;
41. }
42.
43. private void pictureBox1_MouseMove(object sender, MouseEventArgs e) {
44. if (thisIsMove) {//如果为true则移动窗体
45. //当前鼠标的位置与点下的是鼠标坐标的差值加上原来窗体的坐标就是现在移动的位置
46. this.Left = MousePosition.X - sx + l;
47. this.Top = MousePosition.Y - sy + t;
53. }
54. }
55.
56. private void pictureBox1_MouseUp(object sender, MouseEventArgs e) {
57. thisIsMove = false;
58. }
直接把我原来写的弄过来了 貌似 5楼那个也不错、、、用的客户区的坐标来做的计算 我是用的屏幕坐标来做的计算
我是没有使用默认的Windos Form,所以没有放大、隐藏和关闭等按钮,但直接运行时拖不动界面。所以我在原来的界面上添加了面板,然后想通过编程来实现拖动面板,界面就能够随着移动。是你上面的那个程序吗?
你非要在窗体上直接写代码 然后窗体的任何一个地方都可以拖动窗体 ?、、