VB.NET窗体的变量如何传递?

twqmaomao1 2008-06-19 03:00:52
我在FROM1 的 TEXTBOX.TEXT

然后在FROM2 里面用 DIM X AS STRING = FROM1.TEXTBOX.TEXT

竟然是没有任何数据带过来!

为什么????
...全文
380 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjw_8888 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 twqmaomao1 的帖子:]
我在FROM1 的 TEXTBOX.TEXT

然后在FROM2 里面用 DIM X AS STRING = FROM1.TEXTBOX.TEXT

竟然是没有任何数据带过来!

为什么????
[/Quote]

.net中form都是類,form2中沒有form1類的實例當然訪問不到了
常用的做法

class form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm2 As New Form2(Me)
a.Show()
End Sub
end form1
==
class form2
private frm1 as form1
public sub new(frm1 as form1)
'''
me.frm1=frm1
'''
end sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show(Me.frm1.TextBox1.Text)
End Sub
end class
====
gyc 2008-06-26
  • 打赏
  • 举报
回复
这里需要声明一下,你那个代码,应该在.NET 2.0 中有效的
在.NET 1.1 中, 还是没有提供默认实例

另外,你也可以通过My.Forms 来访问默认实例
lx_lhy 2008-06-25
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 skigil 的回复:]
不要试图在窗体间传递变量,这样一般都会出现无法预料的问题,建议新增一个模块,设置全局变量
[/Quote]
rainmansky2008 2008-06-25
  • 打赏
  • 举报
回复
利用窗体属性直接传值。

第1步:在解决方案上添加一个窗体Form2;并添加textBox1、textBox2、Button1,将Button1的标题设为“确定”,DialogResult属性设为“OK”;
第2步:在窗体Form2的类代码中添加两个私有字段: _username、_password,并添加两个public属性:UserName、Password;代码如下:
public partial class Form2: Form
{
private string _username;
private string _password;
public string UserName
{
get
{
return _username;
}
set
{
_username=value;
}
}
public string Password
{
get
{
return _password;
}
set
{
_password=value;
}
}
.....
}

第3步:窗体间相互传值演示
在Form1添加一个的Botton1、一个comboBox1,在Botton1_Click函数中如下代码:
private void button1_Click(object sender,EventArgs e)
{
Form2 myForm2 = new Form2();
myForm2.UserName="Richard";//Form1向Form2传值!!!
myForm2.Password="pwd1234";
DialogResult result= myForm2.ShowDialog();
if(result==DialogResult.OK)
{
comboBox1.Items.Add(myForm2.UserName);////Form2向Form1传值!!!
comboBox2.Items.Add(myForm2.Password);
}
}
对Form2的代码作如下完善:
第1,在Form2_Load中添加如下代码:
private Form2_Load(object sender,EventArgs e)
{
textBox1.Text=_username;
textBox2.Text=_password;
}
第2,在textBox1、textBox2的textChanged事件中添加如下代码:
private void textBox1_TextChanged(object sender,EventArgs e)
{
this.UserName=textBox1.Text;
}
private void textBox2_TextChanged(object sender,EventArgs e)
{
this.Password=textBox2.Text;
}

薛峰1688 2008-06-25
  • 打赏
  • 举报
回复
新增一个模块,设置全局变量
skigil 2008-06-24
  • 打赏
  • 举报
回复
不要试图在窗体间传递变量,这样一般都会出现无法预料的问题,建议新增一个模块,设置全局变量
iwqfeng 2008-06-24
  • 打赏
  • 举报
回复
最好的方法就是使用属性
把Form1的值保存在属性中然后再在form2中调用form1的属性
lingdu1225 2008-06-24
  • 打赏
  • 举报
回复
Dim F2 As New Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim x As String
x = TextBox1.Text
F2.Label1.Text = x
F2.Show()
End Sub
谈阿大 2008-06-24
  • 打赏
  • 举报
回复
我以前写C#的
VB.net也是最近在学习。
第二个窗体的构造函数里 你可以传递参数
  • 打赏
  • 举报
回复
学习英语,软件开发,电子商务,.NET,市场营销,工商管理最新知道的好地方:
http://blog.csdn.net/chinahuyong
http://chinahuyong.blog.china.alibaba.com/
Bullatus 2008-06-23
  • 打赏
  • 举报
回复
如果你用的是6、2005、2008,这个方法没有问题,但如果你用的是2003,就不行了。
如果是在2003里,可以设置一个全局窗体变量,然后使用这个显示出窗体,并在其他窗体中得到其值。
vliguo 2008-06-22
  • 打赏
  • 举报
回复
我在FROM1 的 TEXTBOX.TEXT

然后在FROM2 里面用 DIM X AS STRING = FROM1.TEXTBOX.TEXT

竟然是没有任何数据带过来!

为什么????

form2窗体打开的时候,form1的TEXTBOX已经找不到了。 如果想传的话,设个全局变量吧
zhanghongqiao 2008-06-21
  • 打赏
  • 举报
回复
实例化后是可以传的
---------------------------------------------------
这样的说法是在不敢苟同,窗体比较特殊,成员方法和成员变量等默认都是受保护或者私有的,类的引用是不能直接取其值的,如果你有胆子,报错"未将引用设置到对象的实例";
窗体既然是类,类是什么?是对象的“根”,既然EveryThing is object,那么就会有方法、属性、变量的概念,那么属性传值是最好的选择;
Dim stryouwant As String=String.Empty
Public Property Valueyouwant() As String
Get
Return stryouwant
End Get
Set(ByVal value As String)
stryouwant= value
End Set
End Property
---------------------------------------------------
chenjaichang 2008-06-21
  • 打赏
  • 举报
回复
zhanghongqiao
用属性这样子的做法我非常支持。因为我也是常常这样子做的.
yanlongwuhui 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangfeng12345678 的回复:]
VB.net里可以使用全局变量。用全局变量来存储这个值就可以了。
[/Quote]
这样处理起来简单
  • 打赏
  • 举报
回复
1.1 还是 2.0 ?
实例化后是可以传的
bj981 2008-06-19
  • 打赏
  • 举报
回复
VS2005.net的可以运行了,就如我上面讲的方法。可以取得到值的。
bj981 2008-06-19
  • 打赏
  • 举报
回复
呵。忘讲了。我用的是vb6讲的。。这里的vb.net运行不了。。帮不了你。。。
想飞的狼 2008-06-19
  • 打赏
  • 举报
回复
用shared工享方便
public shared x as string=textbox1.text
bj981 2008-06-19
  • 打赏
  • 举报
回复
可以引用form1的值的。你建两个窗体试试
比如:form1窗体添加一个textbox与按钮,点击按钮弹出form2
在form2中load中可以能msgbox
form1.textbox1.text
试下知了
加载更多回复(2)

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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