我有一个PictureBox,我想在点击按钮后在y轴上向上移动。问题是,按钮单击后,PictureBox只会出现在那里。我希望它能够转移到新的位置,而不是传送。我该怎么办?
public partial class Form1 : Form
{
Point stageplus1 = new Point(164, 325);
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
pictureBox5.Location = stageplus1;
}
private void pictureBox5_Click(object sender, EventArgs e)
{
}
}
答案 0 :(得分:1)
扩展BJ Myers comment这就是您实现这一目标的方法:
private void button2_Click(object sender, EventArgs e)
{
this.timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
// calculate new position
this.pictureBox1.Top++;
this.pictureBox1.Left++;
// when to stop
if (this.pictureBox1.Top > (this.Height - (2 * this.pictureBox1.Height)))
{
this.timer1.Enabled = false;
}
}
我使用默认的Timer控件,以一定间隔引发Tick。 Tick事件在UI线程上执行,因此您不必为跨线程错误打扰。
如果添加到您的表单中,这就是您将获得的:
如果你需要动画更多的东西,你可能想要使用背景工作者和助手类来研究,比如我在this answer of mine中显示的