繁体   English   中英

C#-在运行时使用在设计时添加到TableLayoutPanel的按钮的引用填充数据结构

[英]C# - Populate Data Structure At Runtime With References To Buttons Added To TableLayoutPanel At Design Time

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

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

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

我意识到我可以以编程方式将按钮添加到面板上,但是如果这样做,我还必须在代码中调整它们的视觉设置,而我宁愿避免这样做,以使我的代码尽可能的简洁。

如果有人可以发布几行代码来帮助我继续进行下去,我将不胜感激。

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

问候,

事情

在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();

这将获取所有按钮-如果要过滤掉这些字段,则可能要在Select之前添加Where(f => SomeTestOn(f.Name))过滤器,除了某些已知的命名模式表示它们是您要使用的按钮之外真正想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM