如何在C#中动态更新表单

本文关键字:动态 更新 表单 | 更新日期: 2023-09-27 18:00:52

我正在制作我的第一个2D滚动游戏。我已经对我所有的动作和障碍物碰撞进行了编码。最终,我会在我的表单上有很多面板和图片框,如果我有30多个图片框(敌人碰撞等(,我的第一级会非常混乱

每个级别都会有所不同,所以有时敌人的boss或碰撞会有不同的大小。所以我的问题是,有没有一种方法可以动态更新新表单,我可以根据不同的障碍进行编码,而不必关闭当前表单并打开新表单?

如何在C#中动态更新表单

您可以使用Controls属性访问添加到表单中的所有控件。https://msdn.microsoft.com/de-de/library/system.windows.forms.control.controls(v=vs.110(.aspx

总的来说,我会说你的应用程序设计听起来很糟糕。如果你想坚持使用WinForms,我建议你使用图形而不是控件:https://msdn.microsoft.com/en-us/library/aa287594(v=vs.71(.aspx

但你会到一个点,你会有闪烁。如果是双重缓冲。有了WPF,你可以用大约10000个物体做这样的小游戏,而不会闪烁。

如果你想更进一步,我建议你使用OpenGL或类似的

是的,有很多方法。如果真的窗体中执行(这…很奇怪(,那么搜索并阅读"Windows窗体中的DataBinding"。使用BindingSource组件和智能数据模型以及一些接口(如INotifyPropertyChanged(,当您为数据模型设置新数据时,表单的某些部分可以自动更新。但是,仍然可以用Forms Controls粘上一个游戏。。感觉很奇怪。尝试是可以的,很好的锻炼,但当事情变得不好时,请不要气馁,记住Windows窗体控件根本不是为此而设计的。DataBinding很有趣,控件很有趣,布局也很有趣,但这一切都很昂贵。如果做得不完美,你的结果将充满小故障,并且会像。。好我只想说,试图强迫WindowsForms控件执行与"窗体"不同的操作有时会非常令人失望。

如果你足够固执,仍然坚持使用WindowsForms框架,那么你很快就需要自己"手工"绘制所有或部分图形,即通过一些Graphics类绘制,就像创建自己的控件时一样(控件,而不是用户控件

当你遇到真正的困难时,考虑从Forms转移到WPF(更容易制作漂亮的图形,性能更好(,或者只是转移到一些游戏引擎,即XNA或其他什么,真的。