vb.net在自制的窗体控件中弹出一个窗口再返回一个值

例如:正在自制一个控件A,在A中有一个按钮BUTTON1和变量X.按下BUTTON1就会弹出一个已经制作好的WINDOS窗体FROM2,在FROM2中有textbox1,在关闭FORM2时,将textbox1中的值赋给控件A中的变量X.应该怎么写????
不能用MSGBOX哦

先设计好Form1和Form2。在
Private Class Form2中输入
Public Event ChangeValue(ByVal value As String) '是string还是其它的看你需要了
在Form2的Closed事件:
Private Sub Form2_Closed() Handles Me.Closed
RaiseEvent ChangeValue(TextBox1.Text)'如果是数值类型的话用下面这个:
'RaiseEvent ChangeValue(Val(TextBox1.Text))
End Sub
在Form中定义x:
Dim x As String '是String还是数值类型看你需要了,要和上面的统一
在Form1中写一个处理值的函数。值哪来?别管它
Private Sub ProcessValue(ByVal value As String) '记得统一
x = value
End Sub
在Form1中Button1的Click事件中:
Private Sub Button1_Click() Handles Button1.Click
Dim f2 As New Form2
AddHandler f2.ChangeValue,AddressOf ProcessValue
f2.Show()
End Sub

楼下的更简单啦追问

真是高手啊!!还有一个问题,我实在没分了.真心感谢你能回答,就是我一个应用程序中加载多个自制控件(x.dll)刚开始运行的时候没有问题.但是在其中一个进入循环的时候,就是其中一个控件卡住的时候,其余的同样控件也会卡住.是怎么回事?可以把每个加载的自制的控件都包装到一个线程里面吗?实现每个控件的独立运行???

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-26
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.ShowDialog()
If Form2.Textbox1.Text <> "" Then '如果x可以为空的话,那就不需要这句了
x = Form2.Textbox1.Text
End If
End Sub

试试这样写

vb.net在自制的窗体控件中弹出一个窗口再返回一个值
Private Class Form2中输入 Public Event ChangeValue(ByVal value As String) '是string还是其它的看你需要了 在Form2的Closed事件:Private Sub Form2_Closed() Handles Me.Closed RaiseEvent ChangeValue(TextBox1.Text)'如果是数值类型的话用下面这个:'RaiseEvent ChangeValue(Val(TextBox1.Text))E...

在vb.net 程序计设中当在一个窗体上右击然后出现一个菜单是如何实现这一...
首先在工具箱添加一个叫contextmenu的控件 然后在需要右键菜单的窗体上,找到contextmenu这个属性,把它设置为你刚才添加的菜单

vb.net中如何遍历程序窗体中的控件?并读写控件的数据。
Public Sub GetAllControls(ByVal InContainer As Control, ByRef RecieveList As ListBox) For i As Integer = 0 To InContainer.Controls.Count - 1 If InContainer.Controls.Item(i).Text <> "" Then GetList.Items.Add(InContainer.Controls.Item(i).Text & vbCrLf) End If ...

vb.net的弹出式菜单怎么做
工具箱里有ContextMenu(.NET2.0以后名字有点变化,大概差不多),你加入窗体后就可以像编辑普通菜单那样编辑。编辑好后,选中你要添加菜单的控件。属性窗口里有个ContextMenu属性,在里面选你刚才建立的ContextMenu

关于VB.net RadioButton控件设置cheked时会触发单击事件的问题...
在Panel里面放了3个RadioButton(默认Checked就是False),然后启动,发现第一个被选中了,然后双击了一下它,跳到代码页面,在启动,第二个被选中,双击第二个和第三个,此时再代码一面出现了3个按钮的事件,在三个事件都设好断点,启动程序,发现3个都没有被选中了,而且也没执行任何一个事件。

vb.net 中窗体之间无法传值
不过,在form2的ButtonClick里的dim fr as new Form1,fr.Label1.Text = "AAA"这两句导致了不能传值,因为你重新new了一个Form1,而不是原来的Form1,对象不是一个,所以就没有传值成功。建议你从Form1调用Form2的时候将Form1作为参数传递过去,然后在Form2处理接收参数,这样就可以了。

vb.net单窗口程序设计问题
1、用多个Form,需要时new出来,而不是把n个控件在一个窗体里new。把项目属性的关机模式设为当最后一个窗体关闭时。2、new出来的控件可以通过AddHandler语句来绑定对象事件与属性,如:Private Sub ButtonClick(sender As Object, e As EventArgs)'一些代码 End Sub 下面在需要new控件的地方写:Dim new...

用VB.net的Timer控件动态生成随机数
定义一个全局变量 然后再 timer开始处赋值 在结尾处也赋值 2处不一样的值然后再Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Enabled = False '这里do循环检测这个变量的值 是否是结尾处一样的值 来判断timer过程代...

vb.net 窗体布局的问题
1.先在窗体放置两个pane,pane1的Dock属性是Left,pane2是fill 2.再添加两个pane,分别为pane3,pane4,把她们添加到pane2里面 3.再添加两个button,放置到pane1里面 4.往pane3和pane4中分别放点不同的东西 5.然后button的事件是:private void button1_Click(object sender, EventArgs e){ thi...

我用vb.net,不想换成别的了。跨窗体操作怎么写代码?如在form2中,实现...
如果要在form2中,实现form1.label1.text="***",其实很简单的,首先,你在设计时,把 form1.label1 里的一个属性,就是访问级别改为公共(Public),然后你在别的窗体中就直接写 form1.label1.text="***" 就可以了,补充,在VB2005和2008中就是这样,你用的2005以下的没有用过。

相似回答