Vb.net 如何将文本从一个表单传递到后面打开的表单?

Vb.net 如何将文本从一个表单传递到后面打开的表单?,vb.net,winforms,Vb.net,Winforms,我有两张表格。一个是发票条目,另一个是供应商列表。InvoiceEntry中有一个控件“txtsnam”。ListofSuppliers包含一个包含所有供应商名称的数据网格。当用户在此文本框中按f9键时,将打开供应商表单的列表。用户从网格中选择供应商名称,然后按enter键。在此按enter键时,我想将供应商名称传递给“txtsnam”。我使用了此代码,但它对我无效: 发票录入时: Private Sub txtsnam_KeyDown(sender As Object, e As System

我有两张表格。一个是发票条目,另一个是供应商列表。InvoiceEntry中有一个控件“txtsnam”。ListofSuppliers包含一个包含所有供应商名称的数据网格。当用户在此文本框中按f9键时,将打开供应商表单的列表。用户从网格中选择供应商名称,然后按enter键。在此按enter键时,我想将供应商名称传递给“txtsnam”。我使用了此代码,但它对我无效:

发票录入时:

Private Sub txtsnam_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtsnam.KeyDown`
       If e.KeyCode = Keys.F9 Then
            Dim lov As New SupplierLOV
            lov.ShowDialog()
        End If
End Sub
在供应商名单上:

Private Sub RadGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RadGridView1.KeyDown
If e.keycode=keys.Enter then
   InvoiceEntry.txtsnam.text=RadGridView1.CurrentRow.Cells(0).Value.ToString
  End If
End Sub

我也在财产的帮助下试过,但它也不起作用。我将断点放在第2行,它执行的bt文本不会出现在txtsnam中解决方案1:在Form2中创建一个事件,并在打开Form2时在Form1中订阅它。按下返回键时,在Form2中引发事件并将值作为参数传输。Form1将收到您的价值

解决方案2:在Form2中添加Form1类型的成员,并在创建Form2时将Form1作为参数传递给Form2。通过这种方式,您可以完全访问Form1属性,并且可以随时从代码中进行设置。当您关闭Form2时,您已经在Form1中设置了数据集

解决方案3:拥有一个静态提供者类,并将您需要的来自不同表单的信息存储在那里。您可以在程序中的任何位置设置和获取这些值

解决方案4:。。。还有很多其他的方法。这些是最简单的。试试这个

Private Sub RadGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RadGridView1.KeyDown
If e.keycode=keys.Enter then
   InvoiceEntry.txtsnam.text=RadGridView1.Currentcell.value
  End If
End Sub