我有一个非常基本的应用程序,在工具栏中有按钮。单击按钮后,会将相应的用户控件添加到我的List<Control>
中。然后,我遍历该列表,创建TabPages或mdi表单,并将用户控件作为子控件。我为这些用户控件创建了一个界面,以便可以确保它们包含特定的变量……特别是用于其父TabPage或mdi形式的文本的一个。
当我将用户控件传递给函数(带有控件签名)时,无法引用接口中定义的变量。我想知道解决此问题的最佳方法是什么。我应该创建一个继承“控件”并实现我的接口的新类,然后将用户控件更改为这种新类型的实例吗?
我正在使用C#
最佳答案
您需要将方法的Control
参数强制转换为适当的UserControl,并确认其类型正确。然后,您将能够访问您的API:
public void ProcessMyUserControl(Control control) {
MyUserControl myControl = control as MyUserControl;
if (myControl == null)
{
// This was a different type of control, not your user control...
return;
}
myControl.MyMethod();
}
将列表直接另存为
List<MyUserControl>
而不是List<Control>
可能更简单。然后,只需将方法直接传递给您的类/接口即可。