一个关于winform窗体和类库互访的问题!

qiezic 2005-06-02 11:12:56
我做了个菜菜项目,有两部分:一个是winform窗体(就一个文本框)、另一个是处理各种信息的类库A(编译成DLL文件供winform窗体调用)。现在我想在winform窗体的文本框中实时(就是类库A的提示信息一发生变化就显示在文本框中)显示类库A中的提示信息,这好象只有在类库A中填用winform窗体,如果这样做好象存在DLL的版本问题。
具体该怎么做?望高手指点迷津……
...全文
237 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
凨叔 2005-06-02
  • 打赏
  • 举报
回复
现在我想在winform窗体的文本框中实时(就是类库A的提示信息一发生变化就显示在文本框中)显示类库A中的提示信息,这好象只有在类库A中填用winform窗体。
-------------------------------------------------------------------------
其实这是一个思路的问题,像你这种思路不太符合编程的规范。正确的思路应该是,在类A中声明一个事件处理,类似于OnTextChange这种事件。
pegtop 2005-06-02
  • 打赏
  • 举报
回复
在winform中加上timer控件,每隔一段时间去扫描DLL中的信息。

不能互访,确实存在版本问题。
zhongwanli 2005-06-02
  • 打赏
  • 举报
回复
关键在于如何实时。

楼主是不是类库中出现异常就显示异常信息呢?

如果是,那就没有什么难的。在WinForm 中用
try{}
catch(System.Exception Ex)
{}
就好了。
qiezic 2005-06-02
  • 打赏
  • 举报
回复
哈哈,谢谢Brunhild()
Brunhild 2005-06-02
  • 打赏
  • 举报
回复
类库引发事件:
this.EventValueChanged("新值");
Brunhild 2005-06-02
  • 打赏
  • 举报
回复
在类库中定义:
public delegate void DelegateValueChanged(string newvalue);
public class class1
{
public event DelegateValueChanged EventValueChanged;
}

在WINFORM中定义:
class1 c1=new class1();
c1.EventValueChanged +=new DelegateValueChanged(this.ValueChanged_Handler);

void ValueChanged_Handler(string newvalue)
{
this.TextBox1.text=newvalue;
}


大概就是这样
qiezic 2005-06-02
  • 打赏
  • 举报
回复
恳请楼上给个例子
Brunhild 2005-06-02
  • 打赏
  • 举报
回复
不允许带参数?没听说过
qiezic 2005-06-02
  • 打赏
  • 举报
回复
偶怎么就没考虑到delegate呢,笨!

不过想了下事件好象不允许带参数的,还请楼上再说清楚点
Brunhild 2005-06-02
  • 打赏
  • 举报
回复
就是类库A的提示信息一发生变化就显示在文本框中
---------------------------------------------------------------------------

1.可以用类库引发事件,再由WINFORM处理
2.WINFORM传入一个DELEGATE给类库,由类库在需要的时候调用.
3.类库中定义一个接口,WINFORM中实现,然后将FORM以接口的形式传递给类库调用.
qiezic 2005-06-02
  • 打赏
  • 举报
回复
从类库回写winform可以是可以,除了出现版本问题外到没遇到其他明显问题(到就怕有问题)!
我是把winform编译成dll供类库调用的
bumm 2005-06-02
  • 打赏
  • 举报
回复
有时在几个毫秒提示信息可能就变了有时几十秒才有新的提示信息。

______________________________________________________________________________

看来从类库回写form是不好实现了,还是用timer吧,就是效率低点。
qiezic 2005-06-02
  • 打赏
  • 举报
回复
实时性比较高,有时在几个毫秒提示信息可能就变了有时几十秒才有新的提示信息。
而且,有很多类型的提示信息,觉的winform中调用类库中的变量不怎么理想
bumm 2005-06-02
  • 打赏
  • 举报
回复
在类库里声明一个静态的属性,把类库的提示信息付给这个属性。在你需要在winform窗体的文本框显示类库A中的提示信息时,访问这个静态的属性。
yistudio 2005-06-02
  • 打赏
  • 举报
回复
类库中一定有一个方法是给出消息的
在winform中加一个timer,定时执行类库中的那个方法,将返回的消息填充到textbox中不就行了
qiezic 2005-06-02
  • 打赏
  • 举报
回复
up、up、up
qiezic 2005-06-02
  • 打赏
  • 举报
回复
在winform中加上timer控件,每隔一段时间去扫描DLL中的信息。

不能互访,确实存在版本问题。
-----------------------------------------------------------
提示信息的出现是不规律的,有时间隔很短,有时很长,所以说从winform中去主动提取类库的信息不怎么好

110,524

社区成员

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

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

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