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

时间:2012-03-26 09:02:10

标签: c# dll

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

2 个答案:

答案 0 :(得分:0)

创建一个控件实例,然后将其添加到表单中,之后可以调用其公开的方法。

 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

答案 1 :(得分:0)

如果我已正确理解您的问题,您应该创建一个界面并向其添加函数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();
        }
    }

希望它会有所帮助。