2010-09-16 49 views
12

我正在构建一个包含15x15 = 225按钮的控件,并且需要调整大小。因为它是一个网格,锚定和对接将不起作用。我已经尝试了两个TableLayoutPanel以及处理resize事件来手动放置和调整控件。在这两种情况下,调整大小的速度都是令人无法接受的缓慢。手动处理布局时,在resize函数中挂起/恢复布局不起作用。C#Winforms:有效地显示许多控件

是否有一些基本的东西可以改变以加快速度,或者这只是本地控制的限制?我知道我可以从头开始构建自定义控件,处理点击和绘画自己 - 尽管如果可能的话,我宁愿坚持原生控件。

编辑

我知道这是一个很多按钮。我的问题是技术问题。没有一个关于UI设计。

+2

这是一个很多按钮的地狱。你需要那么多按钮是为了什么? – 2010-09-16 06:29:00

+0

+1给Alastair Pitts。我们应该避免在GUI上出现如此多的按钮。我认为最终用户也同意我的观点。 – 2010-09-16 06:37:42

+0

调整应用程序的大小,查看为什么需要这么长时间。 – 2010-09-16 06:38:41

回答

6

不幸的是,WinForms不能同时显示这么多的控​​件。

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

但在你的情况下,似乎并不是一种选择。你是否在制作类似扫雷游戏的游戏?你有一个可点击的按钮网格。在这种情况下,我建议你去一个自定义的所有者绘制的控制,你将所有按钮合并到一个控件中。不要建立一个包含225个按钮的复合控件 - 这完全没有帮助:-)

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

+0

Gotcha。你能否指给我一些超出“无法应付”的东西 - 有没有博客文章/表演说明,可以帮助我理解造成死亡的原因? +1因为不想聪明地回避技术问题。我知道这是很多按钮,我明白这一点。自定义控制它。 – phillipwei 2010-09-16 07:30:00

+0

我在这里说出个人经验:-)比任何博客帖子都好...嘿嘿。 – 2010-09-16 07:45:40

+0

没有。我试图做类似的事情,并以完全无法使用的形式结束。性能可以达到某个特定的地方。也许你可以逃脱10x10的网格,也许12x12或8x8,但在某个时候它将变得无法使用。 – 2010-09-16 07:47:20