使用多态访问自定义工具属性

时间:2014-06-16 19:55:43

标签: c# winforms

C#有点新鲜。我会尽力解释我的问题。

我很难找到我在自定义工具上制作的属性。我的GUI上有很多这样的工具,所以它并不像使用属性明确地输入它那么简单。这些控件包含在List中,我希望能够轻松访问其属性(这是其隔离和单独的解决方案项目的一部分)。这是我到目前为止的例子:

List<Control> controlList = new List<Control>();
private void btnStart_Click(object sender, EventArgs e)
{        
    foreach (var item in controlList)
    {
       if (item.Enabled)
       {
           custom_control1.Code = "8917237";
           custom_control1.MacAddress = "000000000001";
       }
    }

 // do other stuff based on the above credentials

 }

我希望能够在if语句中执行以下操作:

   item.Code = .... // calculation
   item.MacAddress = .... // this will increment in hex depending on how many controls I have Enabled

以便'item'的每个实例都具有我可以使用for循环或其他内容更改的自定义控件属性。注意:每个控制工具项将根据计算具有不同的MAC和代码。

我不确定如何实现这一点。我想我的主要问题是我能够看到默认的属性列表(如Visible,Enable等等),但不能看到我的自定义属性。做同样的事情:controlList[0].Code对我没有帮助,因为同样的问题。我显然在这里误解了一些东西。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要直接在列表对象中访问自定义属性,列表必须是自定义类的列表,而不是Control。所以,而不是

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

使用

List<MyCustomClass> controlList = new List<MyCustomClass>();