我的目标是制造台式宠物。我已经编写了很多逻辑,这些逻辑可以在while循环中执行并更新每次迭代。为了显示我要使用Windows窗体的生物,但这带来了一个难题。
我希望能够执行逻辑,然后在同一循环中更新窗口(处理事件和重绘),而不必处理Application.Run()
或多线程。例如,作为一个来自python的人,使用tkinter可以在循环中的窗口上调用update()
方法,这与一次调用mainloop()
相同,除了它不会。 t阻止程序。
表格是否提供任何类似的功能?
答案 0 :(得分:1)
正如斯科特·张伯伦(Scott Chamberlain)所述,您应该使用计时器来运行“循环”。 Winforms是基于事件的,因此添加无限循环将冻结程序,因为事件被阻止了。
此代码说明了如何使用计时器。我在窗体中添加了一个图片框,它随着计时器触发而在屏幕上移动。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Timer tmr = new Timer();
tmr.Interval = 50; // milliseconds
tmr.Tick += Tmr_Tick; // set handler
tmr.Start();
}
private void Tmr_Tick(object sender, EventArgs e) //run this logic each timer tick
{
pictureBox1.Left += 1; // move image across screen, picture box is control so no repaint needed
}
}