2017-08-04 103 views
-1

我有两个带有文本框和按钮的表单,我希望第一个表单打开第二个表单。然后,我继续在第二个窗体的文本框中键入一个值,以便当我单击第二个窗体上的按钮时,它必须关闭并将文本框的值传递给第一个窗体文本框。从另一个表单打开表单并获取一个值,然后将其传递回第一个表单

我一直在努力,没有运气迄今做到这一点...

我目前使用vb.net在Visual Studio 2015年

这里是我的代码:

Public Class Form1 

    WithEvents fr2 As New Form2 

    Private Sub btngetvalue_Click(sender As Object, e As EventArgs) Handles btngetvalue.Click 
     fr2.Show() 
    End Sub 

    Private Sub fr2_passvalue() Handles fr2.passvalue 
     Me.txtform1.Text = fr2.txtform2.Text 
    End Sub 

End Class 

Public Class Form2 

    Event passvalue() 

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    End Sub 

    Private Sub btnpassvalue_Click(sender As Object, e As EventArgs) Handles btnpassvalue.Click 
     RaiseEvent passvalue() 
     Me.Close() 
    End Sub 

End Class 

我试图直接访问控件,但它不工作,因为vb.net现在使用类的一切。我似乎无法弄清楚如何解决这个问题。

+0

有与此有关的问题gobs。从**相关**开始,依靠*研究*而不是*运气* – Plutonix

+0

代码作品。有什么问题? – LarsTech

回答

0

重新定义您的事件以传递字符串。然后使用Form2事件将值传递给处理程序。

Public Class Form2 

    Public Event passvalue(text As String) 

    Private Sub btnpassvalue_Click(sender As Object, e As EventArgs) Handles btnpassvalue.Click 
     RaiseEvent passvalue(txtform2.Text) 
     Me.Close() 
    End Sub 

End Class 

在Form1中处理它,更新Form1的TextBox。

Public Class Form1 

    WithEvents fr2 As Form2 

    Private Sub btngetvalue_Click(sender As Object, e As EventArgs) Handles btngetvalue.Click 
     fr2 = New Form2() 
     fr2.Show() 
    End Sub 

    Private Sub fr2_passvalue(text As String) Handles fr2.passvalue 
     Me.txtform1.Text = text 
    End Sub 

End Class 

正如您之前所做的那样,Form1直接访问Form2上的控件,从而破坏了事件的目的。

0

您可以简单地定义一个全局变量(Public),这个变量可以从这两个表单中访问。

+0

为什么“公共”?如何封装?这是问题,这个问题已经回答了100次。你需要停止回答这个问题,所以OP可以去找到答案。 –

相关问题