C#问题:怎么按控件在窗体上移动
就是从一个位置缓慢移动到另一个位置,而不是一闪而过.不是直接交换位置.我想用控件模拟一些移动的事件,但在可视化移动多个控件的过程中遇到很多问题,请高手指点。...
就是从一个位置缓慢移动到另一个位置,而不是一闪而过.
不是直接交换位置.
我想用控件模拟一些移动的事件,但在可视化移动多个控件的过程中遇到很多问题,请高手指点。 展开
不是直接交换位置.
我想用控件模拟一些移动的事件,但在可视化移动多个控件的过程中遇到很多问题,请高手指点。 展开
6个回答
展开全部
用定时器,间隔一个比较小的时间,少量的改变控件的位置,也就是 Left 以及 Top 属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一个拖动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;
}
}
}
在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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过线程或者计时器,每次让控件的坐标加/减一定的值就行了~~
就用线程嘛,每个控件创建一个线程来移动~~~
更好的办法,越复杂 想想GIF是如何驱动的.我感觉,它是最好的办法.
就用线程嘛,每个控件创建一个线程来移动~~~
更好的办法,越复杂 想想GIF是如何驱动的.我感觉,它是最好的办法.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
你可以用这段代码试一下
{
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;
}
你可以用这段代码试一下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询