关于dll调用winform的问题

rextan 2004-08-05 10:37:35
建立一个解决方案有两个项目,一个是windows应用程序,一个是类库。请教类库生成的dll里面的函数可以调用windows应用程序的窗体吗?如果可以那么怎么实现呢?请各位指点迷津。
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rextan 2004-08-06
  • 打赏
  • 举报
回复
我写了一个dll
using System;
using System.Reflection;
using System.Windows.Forms;
namespace LedServer
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class RemotingControl:System.MarshalByRefObject
{
public RemotingControl()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void Open()
{

Assembly assm = Assembly.LoadFrom("E:\\NET\\LedShow\\LedServer\\obj\\Debug\\LedServer.exe");
Type TypeToLoad= assm.GetType("LedServer.LedShow");
object obj;
obj = Activator.CreateInstance(TypeToLoad);
Form formToShow = null;
formToShow = (Form)obj;
formToShow.Show();
}
}
}
其中LedServer是一个windows应用程序LedShow是LedServer里面的一个窗口,我在客户机调用dll的Open函数可以打开一个窗口,但是窗口始终是加载状态不知道是什么问题,请各位指点。
rextan 2004-08-05
  • 打赏
  • 举报
回复
谢谢你的意见对我有很到的启发。初初接触.NET,我做的是一个remoting程序,看了《c#高级编程》上面的例子在客户机调用远程对象是一个dll,但是我的目的是可以通过客户机在服务机打开一个窗口,请教该如何实现比较合适。
brightheroes 2004-08-05
  • 打赏
  • 举报
回复
或者可以考虑将一个WinForm作为参数传递过来
brightheroes 2004-08-05
  • 打赏
  • 举报
回复
个人认为你的思路不是很好
你的dll是应该为windows项目服务的
而不是windows项目为dll服务

所以,有下面的解决方案参考
1:把dll里面的方法,移动到winform项目里面
2:重新考虑处理方式
3:实在不行了,或者说,你就要这样作了
那么Ok,利用反射,动态构建

强烈建议1 or 2
realljx 2004-08-05
  • 打赏
  • 举报
回复
用接口 事先写好接口. 把定义和实现分离 就是说如果你的窗体都符合某一个借口 就很容易调用了.
jkflyfox 2004-08-05
  • 打赏
  • 举报
回复
不会这个,帮楼主顶吧,祝好运。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧