在 c# 应用程序中动态添加自定义控件

本文关键字:添加 自定义控件 动态 应用程序 | 更新日期: 2023-09-27 18:28:56

我创建了两个自定义控件。根据功能,它们中的任何一个都将被选择并在 C# 应用程序中使用。我已经加载了所需的控件,但是我如何使用那里的函数,例如我的控件LoadXML((有一个公共函数。两个控件都包含此函数。一次只能加载一个控件。

在 c# 应用程序中动态添加自定义控件

创建控件的实例,然后将其添加到窗体中,之后可以调用其公共公开的方法。

 TestControl myTestControl = new TestControl();
 this.Controls.Add(myTestControl);
 myTestControl.LoadXML();

如果通过 dll 加载控件,请尝试以下操作来调用该方法:

    // Use the file name to load the assembly into the current
    // application domain.
    Assembly a = Assembly.Load("example");
    // Get the type to use.
    Type myType = a.GetType("Example");
    // Get the method to call.
    MethodInfo myMethod = myType.GetMethod("MethodA");
    // Create an instance.
    object obj = Activator.CreateInstance(myType);
    // Execute the method.
    myMethod.Invoke(obj, null);

http://msdn.microsoft.com/en-us/library/25y1ya39.aspx

如果我正确理解了你的问题,你应该创建一个接口并向其添加函数LoadXML()。在自定义控件上实现接口。现在,您可以创建接口的对象并使用所需的控件对其进行初始化。

interface MyInterface
    {
        void LoadXML();
    }

在用户控件中,实现MyInterface

public class UserControl1 : UserControl, MyInterface
    {
        public void LoadXML()
        {
          ...  //do what you want
        }
    }

UserControl2也一样现在在接口对象中加载所需的用户控件并调用LoadXML()

 class Class
    {
        MyInterface control;
        public Class()
        {
            if (condition == true)
                control = new UserControl1();
            else
                control = new UserControl2();
            control.LoadXML();
        }
    }

希望它会有所帮助。