Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Winforms:高效显示多个控件_C#_Winforms_Performance - Fatal编程技术网

C#Winforms:高效显示多个控件

C#Winforms:高效显示多个控件,c#,winforms,performance,C#,Winforms,Performance,我正在构建一个包含15x15=225个按钮的控件,需要调整大小。因为它是一个网格,锚定和停靠将不起作用。我尝试了TableLayoutPanel和处理resize事件来手动放置和调整大小控件。在这两种情况下,调整大小的速度都慢得令人无法接受。手动处理布局时,“调整大小”功能中的“暂停/恢复布局”没有帮助 是否有一些基本的东西我可以更改以加快速度,或者这只是本机控件的一个限制?我知道我可以从头开始构建一个自定义控件,自己处理点击和绘制——不过如果可能的话,我更喜欢使用本机控件 编辑 我知道有很多纽

我正在构建一个包含15x15=225个按钮的控件,需要调整大小。因为它是一个网格,锚定和停靠将不起作用。我尝试了TableLayoutPanel和处理resize事件来手动放置和调整大小控件。在这两种情况下,调整大小的速度都慢得令人无法接受。手动处理布局时,“调整大小”功能中的“暂停/恢复布局”没有帮助

是否有一些基本的东西我可以更改以加快速度,或者这只是本机控件的一个限制?我知道我可以从头开始构建一个自定义控件,自己处理点击和绘制——不过如果可能的话,我更喜欢使用本机控件

编辑


我知道有很多纽扣。我的问题是技术性的;没有关于UI设计的内容。

WinForms不能同时显示这么多控件

如果我处在你的情况下,我会先考虑我是否可以把表格分成几页。在许多情况下,用户也更容易理解

但在你的情况下,这似乎不是一个选择。你在做类似扫雷舰的游戏吗?这里有一个按钮网格,所有按钮都可以点击。在这种情况下,我建议您使用自定义的所有者绘制控件,将所有按钮合并到一个控件中。不要构建包含225个按钮的复合控件-这根本没有帮助:-)


最后一个选择是切换到WPF。WPF使用硬件加速渲染,因此速度可能会更快,但使用的控件太多,甚至没有帮助

那按钮太多了。你为什么需要这么多按钮?+1到Alastair Pitts。我们应该避免在GUI上出现这么多按钮。我想最终用户也同意我的看法。在调整应用程序大小的同时对其进行概要分析,看看为什么需要这么长时间。他们真的需要这样做吗?换句话说,如果您需要做的只是检测类似于表的对象中的单击并使其正确停靠/锚定/调整大小,那么是否可以使用其他方法,例如多列列表框?明白了。你能给我指出一些“只是无法处理”之外的事情吗?有没有博客帖子/性能解释可以帮助我理解是什么导致事情死亡的+1因为没有试图聪明地回避技术问题。我知道有很多按钮,我明白这一点。是自定义控件。我在这里是根据个人经验说的:-)比任何博客文章都好。。。呵呵,不,真的。我曾经尝试过做类似的事情,结果却得到了一个完全无法使用的表单。性能在某个故障点之前是正常的。也许您可以使用10x10网格、12x12或8x8网格,但在某一点上它将变得不可用。