注册 登录
编程论坛 VC.NET论坛

[求助]怎么在窗体间传递信息?

NET爱好者 发布于 2006-06-06 17:26, 3207 次点击


我想实现这样的目的:
有两个窗体,一个是主窗体。上面有一个treeview,一个添加按钮,一个删除按钮。另一窗体作为窗体2,上面有textbox,button1,button2.
(1):当我按下添加按钮时,出现另一个窗体,窗体2。
(2):按下窗体2上的button1后,textbox上的字符作为主窗体treeview的一个node出现在treeview中,同时窗体2关闭。按下button2后,窗体2关闭,什么也不做。


下面是我失败的程序,可以通过编译,但无法实现上述功能,还请懂的高手指点一二,我先谢谢了。


只有本站会员才能查看附件,请 登录

15 回复
#2
NET爱好者2006-06-16 20:34
有谁知道的,帮帮我啊。
#3
十一月天2006-06-19 12:54
把第二个窗体做成一个控件,在第一个窗体中调用,剩下的我就不用多说了吧
#4
NET爱好者2006-06-19 22:42
以下是引用璀璨星河在2006-6-19 12:54:40的发言:
把第二个窗体做成一个控件,在第一个窗体中调用,剩下的我就不用多说了吧

好像懂了,我先试试。

#5
十一月天2006-06-21 10:22
试的怎么样了?
#6
myajax952006-06-21 14:47
斑竹说的不错。
这个具体问题是不需要在窗体间传信息的。所谓传信息指的是send windows message。
这里的大概作法就像璀璨星河说的那样,第二个窗口作成Dialog,DoModal之后原来的Treeview读出Dialog里面的text。

[此贴子已经被作者于2006-6-21 14:52:24编辑过]

#7
NET爱好者2006-06-21 21:10
以下是引用璀璨星河在2006-6-21 10:22:59的发言:
试的怎么样了?

如果做成无模式对话框。就是用<窗体对象>->show()调用的方法来调用。这个怎么做,能再具体点吗?

#8
十一月天2006-06-22 10:52
就是你写的这样啊,遇到什么问题了吗?
#9
NET爱好者2006-06-22 20:46
以下是引用璀璨星河在2006-6-22 10:52:56的发言:
就是你写的这样啊,遇到什么问题了吗?

就是在调用show()函数后(此函数在我的主窗体中调用的。),我在子窗体上点击确定,主窗体无法立即在树图中添加节点。
要是能说明问题,或者这个程序可以简单化一点。在我在自窗体上点击确定后,在主窗体上的静态标签能改变标题。
版主可以下我的压缩文件看看。就是这里卡住了。show()函数显示了子窗体后,子窗体上发生的事件怎么通知主窗体。


楼上个各贴子我也看了。用MFC可以生成MFC框架下的基于对话框的程序,在MFC中,如果生成的是无模式对话框,用Create函数生成子窗体,子窗体通知主对话框的方法可以是发送消息。问题总结为一点就是在NET framework中,子窗体上的事件怎样通知主窗体?

#10
myajax952006-06-22 23:19
和.NET framework没什么关系。和怎么发送消息也没关系,因为如你所说主窗口的静态标签已经可以改动。应该是你写tree的时候最后没有写SetRedraw(TRUE);之类的。没有看你的程序,不过你可以先检查一下,或者哪没写Invalidate()。
#11
NET爱好者2006-06-25 21:30
以下是引用myajax95在2006-6-22 23:19:05的发言:
和.NET framework没什么关系。和怎么发送消息也没关系,因为如你所说主窗口的静态标签已经可以改动。应该是你写tree的时候最后没有写SetRedraw(TRUE);之类的。没有看你的程序,不过你可以先检查一下,或者哪没写Invalidate()。

版主可能误解我的意思了。我还没有实现静态标签名称的更改,我的意思是如果静态标签可以更改的话,那么在tree上加个节点也是一样的道理。

#12
十一月天2006-06-26 08:13
以下是引用NET爱好者在2006-6-22 20:46:07的发言:

子窗体上的事件怎样通知主窗体?

这个我也正在研究,我试过两个窗体互相调用,可是失败了,我也很想知道,失败的原因就是子窗体调用父窗体时候不能初始化父窗体的对象。

#13
NET爱好者2006-06-26 20:30
以下是引用璀璨星河在2006-6-26 8:13:08的发言:

这个我也正在研究,我试过两个窗体互相调用,可是失败了,我也很想知道,失败的原因就是子窗体调用父窗体时候不能初始化父窗体的对象。

是啊,我也为这个苦恼了很久,我们共同研究吧。

#14
十一月天2006-06-27 09:54
好啊
#15
CrazyWeed09072006-06-28 10:12
以下是引用璀璨星河在2006-6-26 8:13:08的发言:

这个我也正在研究,我试过两个窗体互相调用,可是失败了,我也很想知道,失败的原因就是子窗体调用父窗体时候不能初始化父窗体的对象。

我好像问过你这个事情,哈哈

#16
十一月天2006-06-28 13:14
以下是引用CrazyWeed0907在2006-6-28 10:12:53的发言:

我好像问过你这个事情,哈哈

当时就没有好的答复

1