我做了很多搜索,并没有找到任何帮助。
是否可以使用C#“滑动”或“移动”,使用简单的For循环将对象从一个位置移动到另一个位置?
谢谢
答案 0 :(得分:3)
我建议您使用Timer。还有其他选择,但如果你想避免线程问题等,这将是简单的。
使用直接for循环将要求您使用Application.DoEvents()
抽取消息队列以确保窗口有机会实际呈现更新的控件,否则for循环将运行完成而不更新UI和控件将显示从源位置跳转到目标位置。
这是一个QAD示例,用于在单击时为Y方向上的按钮设置动画。此代码假定您在名为animationTimer
的表单上放置了一个计时器控件。
private void button1_Click(object sender, EventArgs e)
{
if (!animationTimer.Enabled)
{
animationTimer.Interval = 10;
animationTimer.Start();
}
}
private int _animateDirection = 1;
private void animationTimer_Tick(object sender, EventArgs e)
{
button1.Location = new Point(button1.Location.X, button1.Location.Y + _animateDirection);
if (button1.Location.Y == 0 || button1.Location.Y == 100)
{
animationTimer.Stop();
_animateDirection *= -1; // reverse the direction
}
}
答案 1 :(得分:1)
假设您正在谈论的对象是某种Control
,您可以更改它的Location
属性。
这样的事情:
for(int i = 0; i < 100; i++)
{
ctrl.Location.X += i;
}
我认为应该工作。