| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1913 人关注过本帖
标题:求助:如何实现父窗体的数据时间传递到子窗体[又出现了新问题,还请再指点一 ...
只看楼主 加入收藏
刘老牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-7-7
结帖率:0
收藏
已结贴  问题点数:0 回复次数:10 
求助:如何实现父窗体的数据时间传递到子窗体[又出现了新问题,还请再指点一下]:
请赐教[又出现了新问题,还请再指点一下]:父窗体中有一文本框及一按钮(确定),子窗体则只有一个文本框.我想在父窗体的文本框输入内容,再点确定后,该文本框的内容能在子窗体的文本框显示出来.
谢谢!
[上述内容已经解决,但出现了新问题]

我调用子窗体是通过菜单来完成的,菜的的程序代码如下:
   Private Sub 返利资料录入ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Menu返利资料录入.Click(此句自动生成,可不用看)
        Dim frmMenu返利资料录入 As New Frm返利资料录入
        If OpenOnce(frmMenu返利资料录入) = False Then
            frmMenu返利资料录入.MdiParent = Me
            frmMenu返利资料录入.Show()
        End If
    End Sub     
 最先用此代码时,调用无问题,但为了解决最先的问题,我将此代码的第一行 ,即定义移到了父程序的开始,应该指变成全局变量,这样调整后,即解决了最先的问题:即父窗体向子窗体传递数据的问题,但新的问题是:如果我关闭了子窗体,再打开时,即再点菜单想调用这个子窗体时,出现了
“无法访问已释放的对象”

不知有没有简单的方法。

[ 本帖最后由 刘老牛 于 2011-7-9 15:27 编辑 ]
搜索更多相关主题的帖子: 返利 录入 文本框 资料 
2011-07-07 14:59
fily1314
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1190
注 册:2007-7-18
收藏
得分:7 
把子窗体对象定义为全局变量,子窗体内文本框的modifiers设置为friend(好像默认是friend的),你就可以通过子窗体对象直接访问里面的文本框了。
2011-07-07 17:01
xjynsz
Rank: 1
等 级:新手上路
帖 子:1
专家分:7
注 册:2011-7-7
收藏
得分:7 
可以做个全局变量来传递数据。
2011-07-07 17:01
刘老牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-7-7
收藏
得分:0 
谢谢两位的指点,我先试下,看如何操作.
2011-07-08 11:16
刘老牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-7-7
收藏
得分:0 
'下列语句是通过菜单调入子窗体
Private Sub 返利资料录入ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Menu返利资料录入.Click
        Dim frmMenu返利资料录入 As New Frm返利资料录入
        If OpenOnce(frmMenu返利资料录入) = False Then
            frmMenu返利资料录入.MdiParent = Me
            frmMenu返利资料录入.Show()
        End If
 End Sub

'下列是父窗体的代码
Dim Menu返利资料录入 As New Frm返利资料录入
        If OpenOnce(Menu返利资料录入) Then
            Menu返利资料录入.TextcustomerId.Text = ToolCustomerId.Text
         End If
End Sub

这样执行,子窗体的TEXT数据没变.也按2楼的指点把子窗体内文本框的modifiers设置为friend了
环境为 2005
首选这个想法成不成立,如果成立,请问上面的方向是不是对的,如何做这个事,谢了.
2011-07-08 11:46
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:7 
我想,这可能是你的IF条件没有被满足造成的。下面是一个例子,需要两个窗体,Form1,Form2
程序代码:
Public Class Form1
    Dim frm As New Form2

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.IsMdiContainer = True'将自身设置为父窗体
        frm.MdiParent = Me'将FORM2设置为FORM1的子窗体
        frm.Show()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        frm.TextBox1.Text = TextBox1.Text'使FORM2的文本框与FORM1的文本框内容一致
    End Sub
End Class


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-07-08 12:03
刘老牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-7-7
收藏
得分:0 
谢谢版主,我按版主的方法重做了一个一模一样的,结果是可以的,然后,又回到我的程序还是不行,于是我又检查我程序,发现在定义窗口是不一致.改成一致后就行了.具体是第五楼的第三行为:
Dim frmMenu返利资料录入 As New Frm返利资料录入
而在下面又做了一个定义,如下:
Dim Menu返利资料录入 As New Frm返利资料录入

这两个定义的DIM后面的名字不一样,于是,我将第二次DIM删了,结果就可以了.

谢谢版主.

2011-07-09 12:00
刘老牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-7-7
收藏
得分:0 
版主一是指导的及时,二是指导的详细.
2011-07-09 12:01
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
对象已被销毁当然无法访问。
如果在项目中窗体没有必要在每次加载时初始化,在程序结束前没有必要DISPOSE窗体资源,设为HIDE就行。
难道你是从VB6转过来的么?如果是,那么刚入门时,一定要忘了VB6才好。
你可以看看这个贴子:关于.NET下的父窗体与子窗体的问题 https://hi.bccn.net/space-201990-do-blog-id-15528.html。这个贴子告诉你,没有必要在一个程序中一定要设定一个父窗体MDI。



===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-07-09 19:08
刘老牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-7-7
收藏
得分:0 
不好意思,确是先学的VB6,上面的代码也是照书上抄的,谢谢版主.
2011-07-11 14:24
快速回复:求助:如何实现父窗体的数据时间传递到子窗体[又出现了新问题,还请再指 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075723 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved