现在有两个WPF做的dll 控件 A.dll 和 B.dll在Winform中 有两个按钮btn1 btn2 和一个elementHost1控件。
private void btn1_Click(object sender, EventArgs e)
{
Object obj2;
Assembly SampleAssembly2; SampleAssembly2 = Assembly.LoadFrom("A.dll");
obj2 = SampleAssembly2.CreateInstance("Roye.ZRY_Dll"); elementHost1.Child = (UIElement)obj2;
}
private void btn2_Click(object sender, EventArgs e)
{
Object obj2;
Assembly SampleAssembly2; SampleAssembly2 = Assembly.LoadFrom("B.dll");
obj2 = SampleAssembly2.CreateInstance("Roye.ZRY_Dll"); elementHost1.Child = (UIElement)obj2;
}
为什么elementHost1.Child不会改变呢?请高手留下邮箱,我发测试源码给大家wpfc#反射
private void btn1_Click(object sender, EventArgs e)
{
Object obj2;
Assembly SampleAssembly2; SampleAssembly2 = Assembly.LoadFrom("A.dll");
obj2 = SampleAssembly2.CreateInstance("Roye.ZRY_Dll"); elementHost1.Child = (UIElement)obj2;
}
private void btn2_Click(object sender, EventArgs e)
{
Object obj2;
Assembly SampleAssembly2; SampleAssembly2 = Assembly.LoadFrom("B.dll");
obj2 = SampleAssembly2.CreateInstance("Roye.ZRY_Dll"); elementHost1.Child = (UIElement)obj2;
}
为什么elementHost1.Child不会改变呢?请高手留下邮箱,我发测试源码给大家wpfc#反射
关闭软件后。先单击btn2正常显示B.dll 然后单击btn1没有反应。
关闭软件后,重新启动软件。先单击btn2正常显示B.dll 然后单击btn1没有反应。
this.Controls.Remove(elementHost1);
elementHost1=new ElementHost1();
this.Controls.Add(elementHost1);
elementHost1.Location = new System.Drawing.Point(113, 12);
elementHost1.Name = "elementHost1";
elementHost1.Size = new System.Drawing.Size(329, 354);
....
但是如果把
btn1_Click 换成以下代码,倒可以和B.dll互换。(WPF的Label和B.dll切换) System.Windows.Controls.Label lab = new System.Windows.Controls.Label();
lab.Content = "Button in WPF";
// Add it to ElementHost
elementHost1.Child = lab;
我发现你的两个dll是相同的。
你的两个dll是一个项目编译出来的吧(只改了一个图片?)然后改了一下编译好的dll的名字?
如果是,改下AssemblyInfo.cs,重新编译