从阵列控制多个自定义工具

时间:2014-06-12 19:27:10

标签: c# winforms

我正在构建一个简单的WinForms GUI,它使用多个(~50)相同的自定义工具。我导入的自定义工具很好,是我主要表单的一部分。我的问题是我想要一种处理每个自定义工具属性的优雅方式(即BackColor,Text,Visible,Enable等)。

工具很简单;它上面有几个标签,每个都有一些我用来存储值的字符串。我希望能够随意控制自定义工具上的这些标签,而无需输入大量代码。

我的Form1 Design上有一个文本框,它控制我想要启用和可见的自定义工具的数量,但我无法找到一个控制它的好方法。我是否明确将50个自定义工具放入某种数组中?如果是这样,怎么样?由于它是一个自定义工具,我不能以CustomToolName[] customTools = new CustomToolName[50]为例。我已经围绕这个问题绞尽脑汁,如果不做出一个非常丑陋和漫长的解决方案,就无法找到方法。

有什么建议吗?你会怎么做?

编辑:列表建议有效。我可以使用List<UserControl> CustomTool = new List<UserControl>();控制它们,然后将每个自定义工具添加到列表中。 CustomTool [0]的小测试.Visible = false;工作。我也可以使用for循环来控制它们。非常感谢。

1 个答案:

答案 0 :(得分:0)

这是多态性的经典用法!创建一个Base类的数组或列表,并将所有控件放在里面。使用循环运行列表并使用属性。如果需要获取仅特定类具有的特殊属性,请验证当前对象的类型。这样的事情:

 List<Control> controls = new List<Control>();

        //Add controls

        foreach (Control item in controls)
        {
            item.Visible = true;

            if (item is MyCustomButton)
            {
                ((MyCustomButton)item).CustomProperty = "123";
            }
        }