对C#有点新鲜。我会尝试尽我所能解释我的问题。使用多态性访问自定义工具属性
我很难获得我在自定义工具上创建的属性。我在我的GUI上有很多这些工具,所以它不像使用属性显式输入那样简单。这些控件包含在列表中,我希望能够轻松访问它们的属性(这是它们的独立解决方案项目的一部分)。这是我的东西我迄今为止例如:
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
使“项”的每个实例都有该自定义控件属性,我可以改变一个for循环或什么。注意:根据计算,每个控制工具项目将具有不同的MAC和代码。
我不知道如何实现这一点。我想我的主要问题是我能够看到属性的默认列表(如可见,启用等),但不是我的自定义属性。做类似:controlList[0].Code
也不能帮助我,因为同样的问题。我显然在这里误解了一些东西。
在此先感谢您的帮助。
如果我正确地读你的问题......只是所有的“共享”的属性和方法添加到'interface',让你控制'implement'的接口(可能带有可能重写的抽象基类)。然后在你的controlList循环中,将你的控件强制转换为接口类型 – ChristopheD
当你说“自定义工具”时,你的意思是你已经创建了Control的子类? –
@ChristopheD感谢您的帮助。这听起来像你已经理解我的问题,但我不在我能够理解它的水平,然后执行你的回答程序。如果你有时间,是否有可能提供一个我可以学习的例子?那么我可能会从这个理解的角度来实施。 – Shen