Redian新闻
>
问个Winform与工作类的互动问题。
avatar
问个Winform与工作类的互动问题。# Programming - 葵花宝典
b*l
1
这个背景设计得真漂亮,被雷到了。
avatar
e*r
2
我把要实现的功能都放到一个worker class里面,然后把该worker class作为一个
winform class的成员。用户点击winform上的button时,button的event内会call
worker class的public方法。
现在的问题是,我想在winform内显示worker class输出的信息,不知道最地道的做法
是什么。
如果都在一个class, worker可以通过改变winform内textbox.Text来显示不同信息,但
现在winform和worker class在不同的类,不能直接调用,而且winform control都是私
有成员,不能通过winform的reference直接访问。
不知道这种winform和worker class的coupling问题是不是很常见而且有成熟的解决办
avatar
A*t
3
漂亮!
avatar
k*k
4
set your public method's output as a string instead of void, if
you need a string as output, or whatever you want.
another way is to put an out parameter in the method.

【在 e***r 的大作中提到】
: 我把要实现的功能都放到一个worker class里面,然后把该worker class作为一个
: winform class的成员。用户点击winform上的button时,button的event内会call
: worker class的public方法。
: 现在的问题是,我想在winform内显示worker class输出的信息,不知道最地道的做法
: 是什么。
: 如果都在一个class, worker可以通过改变winform内textbox.Text来显示不同信息,但
: 现在winform和worker class在不同的类,不能直接调用,而且winform control都是私
: 有成员,不能通过winform的reference直接访问。
: 不知道这种winform和worker class的coupling问题是不是很常见而且有成熟的解决办
: 法

avatar
m*6
5
选的衣服有点过时。给了个9分。下次再努力!
avatar
g*a
6
卡夫卡大牛快看看我的微软面试题。

【在 k*k 的大作中提到】
: set your public method's output as a string instead of void, if
: you need a string as output, or whatever you want.
: another way is to put an out parameter in the method.

avatar
b*l
7
谢谢捧场,也给你们打分
avatar
e*r
8
问题是public method执行过程中不同阶段要输出不同信息。例如worker class中有一
个ConnectToServer(...),开始时输出: "Connecting to Server...",连接建立后
要输出"Connected to Server". 我想winform每个阶段都把这些信息output到text box
上。

【在 k*k 的大作中提到】
: set your public method's output as a string instead of void, if
: you need a string as output, or whatever you want.
: another way is to put an out parameter in the method.

avatar
g*a
9
搞个event吧,每次有新文字就fire event,winform的event handler
对应更新。

box

【在 e***r 的大作中提到】
: 问题是public method执行过程中不同阶段要输出不同信息。例如worker class中有一
: 个ConnectToServer(...),开始时输出: "Connecting to Server...",连接建立后
: 要输出"Connected to Server". 我想winform每个阶段都把这些信息output到text box
: 上。

avatar
k*k
10
这个应该是正确的解决办法,如果需要传递多次消息。
可以定义一个 event,带上一个 string 参数。

【在 g********a 的大作中提到】
: 搞个event吧,每次有新文字就fire event,winform的event handler
: 对应更新。
:
: box

avatar
e*r
11
让我试试,thx
avatar
e*r
12
弄出来了:
1.worker class define&declare一个delegate.
2.然后winform中定义一个函数,绑定到worker class的delegate中
3.每当需要update的时候,worker class调用delegate.
说白了就是把winform中update textbox的函数指针传进worker class,然后update时
worker class调用函数指针对winform进行update.
语法比定义event要简练一些。
avatar
N*n
13
You can handle it w/ classic InvokeRequired method.

【在 e***r 的大作中提到】
: 我把要实现的功能都放到一个worker class里面,然后把该worker class作为一个
: winform class的成员。用户点击winform上的button时,button的event内会call
: worker class的public方法。
: 现在的问题是,我想在winform内显示worker class输出的信息,不知道最地道的做法
: 是什么。
: 如果都在一个class, worker可以通过改变winform内textbox.Text来显示不同信息,但
: 现在winform和worker class在不同的类,不能直接调用,而且winform control都是私
: 有成员,不能通过winform的reference直接访问。
: 不知道这种winform和worker class的coupling问题是不是很常见而且有成熟的解决办
: 法

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。