在 c# 应用程序中动态添加自定义控件
本文关键字:添加 自定义控件 动态 应用程序 | 更新日期: 2023-09-27 18:28:56
我创建了两个自定义控件。根据功能,它们中的任何一个都将被选择并在 C# 应用程序中使用。我已经加载了所需的控件,但是我如何使用那里的函数,例如我的控件LoadXML((有一个公共函数。两个控件都包含此函数。一次只能加载一个控件。
创建控件的实例,然后将其添加到窗体中,之后可以调用其公共公开的方法。
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();
}
}
希望它会有所帮助。