C#问题:怎么按控件在窗体上移动

就是从一个位置缓慢移动到另一个位置,而不是一闪而过.不是直接交换位置.我想用控件模拟一些移动的事件,但在可视化移动多个控件的过程中遇到很多问题,请高手指点。... 就是从一个位置缓慢移动到另一个位置,而不是一闪而过.
不是直接交换位置.
我想用控件模拟一些移动的事件,但在可视化移动多个控件的过程中遇到很多问题,请高手指点。
展开
 我来答
iceser
2008-09-14 · TA获得超过2708个赞
知道大有可为答主
回答量:695
采纳率:100%
帮助的人:444万
展开全部
用定时器,间隔一个比较小的时间,少量的改变控件的位置,也就是 Left 以及 Top 属性。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aideqiuqian7
2008-09-15 · TA获得超过648个赞
知道小有建树答主
回答量:417
采纳率:0%
帮助的人:311万
展开全部
给你一个拖动button的代码。。。

在winform中的,试一试。。。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Runtime.InteropServices;

namespace WindowsApplication1
{

public partial class Form1 : Form
{
Point pt;
bool moves = true;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (moves == true)
{
MessageBox.Show("sfdfdf");
}
}

private void button1_MouseDown(object sender, MouseEventArgs e)
{
pt = Cursor.Position;
}

private void button1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int px = Cursor.Position.X - pt.X;
int py = Cursor.Position.Y - pt.Y;
button1.Location = new Point(button1.Location.X + px, button1.Location.Y + py);
pt = Cursor.Position;
moves = false;
}
}

private void button1_MouseUp(object sender, MouseEventArgs e)
{
moves = true;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wolfboy55
2008-09-15 · TA获得超过138个赞
知道答主
回答量:265
采纳率:0%
帮助的人:135万
展开全部
通过线程或者计时器,每次让控件的坐标加/减一定的值就行了~~
就用线程嘛,每个控件创建一个线程来移动~~~

更好的办法,越复杂 想想GIF是如何驱动的.我感觉,它是最好的办法.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjfjfzzjf
2008-09-18
知道答主
回答量:51
采纳率:0%
帮助的人:16万
展开全部
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
Point a = new Point(e.X, e.Y);
ap.x = e.X;
ap.y = e.Y;

timer1.Enabled = true;

}

private void timer1_Tick(object sender, EventArgs e)
{
if (pictureBox1.Left < ap.x - 50)

pictureBox1.Left = pictureBox1.Left + 10;

else pictureBox1.Left = pictureBox1.Left - 10;
if (pictureBox1.Top < ap.y - 25)
pictureBox1.Top = pictureBox1.Top + 10;
else pictureBox1.Top = pictureBox1.Top - 10;
}

你可以用这段代码试一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d069b1313
2008-09-14
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
一楼主的代码写的不怎么样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式