永发信息网

请教一个vb.net的窗口之间传递变量值的问题

答案:2  悬赏:30  手机版
解决时间 2021-12-03 08:31
  • 提问者网友:记得曾经
  • 2021-12-02 07:46
请教一个vb.net的窗口之间传递变量值的问题
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-12-02 08:29
For Each f As Form In My.Application.OpenForms
            If f.ToString Like "Form*" Then
                    Label1.text=f.str
            End If
        Next 大概这样就可以,My.Application.OpenForms包含的是已打开的窗口。
追问谢谢您的答复,但是出现错误,因为str并不是windows.Forms.Form的成员,请问该怎么改呢?追答        For Each f  In My.Application.OpenForms '取消对f的定义
            If f.Name Like "Form*" Then 'toString改为Name
                    Label1.text=f.str
            End If
        Next追问非常谢谢您的回复,不好意思我的回复有点晚。还是会出现问题,虽然取消了对f的定义,在第一次单击按钮时没有出现错误,但是在第二次点击时会出现str不是mainform的成员,因为str只定义在form1,2,3中,而且最主要的问题是str的值并没有被传递 T_T。不好意思的再次向您请教有没有更好的解决办法?追答难道这句 If f.Name Like "Form*" Then 没用吗?这句是对名字符合条件的才进入操作,就是为了把mainform排除在外。你可以用其它检查方法,如用规则对象:
If System.Text.RegularExpressions.Regex.IsMatch(f.name, "^Form\d+$") Then
这样就相当精确了。
全部回答
  • 1楼网友:冷風如刀
  • 2021-12-02 10:03
用form的ShowDialog这个功能,这个是可以进行窗体间的传值的。

比如在父窗体上需要传的值是textbox1的内容,子窗体是childform.
那么在父窗体上的点击事件中可以这样写
dim frm as childform = New childform
'要在子窗体上的textbox1里显示父窗体中的textbox1中的内容,这样写
frm.textbox1.text = me.textbox1.text
'最后
frm.showdialog()
这样就可以了。
如果说你三个窗体完全一样,那你也不用写三个一样的窗体只要写一个就行了,在不同的按钮事件中做不同的赋值即可。

不过这样打开的子窗体是模态窗体,也就是说在子窗体显示之后,要对父窗体进行操作必需关闭子窗体才行。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯