0

我正在使用 Visual C# 2008 Express 版本。

如果在设计时我有一个表单 [myMainForm],
我在其中添加了一个 TabControl [myTabControl],
并且 myTabControl 有一个 tabPage [myTabPage],
我在这个 tabPage 中添加了一个 tableLayoutPanel [myTableLayoutPanel],
并且我在 myTablelayoutPanel添加了十个按钮(button1、button2、button3 等)。

在运行时,我想使用对我添加到 myTableLayoutPanel 的所有十个按钮的引用来填充数据结构。我想以最简单、最有效的方式处理对按钮的引用。与数组结合的 for...next 循环是解决问题的最佳方法吗?

我意识到我可以以编程方式将按钮添加到面板中,但如果我这样做,我将不得不在代码中调整它们的视觉设置,我宁愿避免这样做,以保持我的代码尽可能干净和简单。

如果有人可以发布几行代码来让我继续这样做,我将不胜感激。

感谢您抽时间阅读。快乐编码。

问候,

事情

4

1 回答 1

1

在 C#3(在 VS 2008 中)中,您可以使用数组初始值设定项语法设置编译时数组:

var buttons = new [] { button1, button2, ... button10 };

或者,您可以反映所有字段并过滤按钮,沿着

using System.Linq;

// tlp being your TablelayoutPanel instance
var buttons = tlp.GetType().GetFields().Select(f => f.GetValue(tlp)).Where(v => v is Button).ToArray();

这将获取所有按钮——如果您想过滤掉这些字段,您可能需要在Where(f => SomeTestOn(f.Name))之前添加一个过滤Select器,除非有一些已知的命名模式表明它们是您真正想要的按钮。

于 2009-11-12T00:33:02.557 回答