我有一个非常基本的应用程序,在工具栏中有按钮。单击按钮后,会将相应的用户控件添加到我的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>可能更简单。然后,只需将方法直接传递给您的类/接口即可。

10-08 18:06