2017-03-20 54 views
-1

我正在制作一个程序来生成SQL Server代码,以便在我的VB.NET程序中使用它。如何将Form1中的值传递给Form2

我有一个包含连接就像你在图片中看到下面这第一种形式:

1

连接工程100%,但在第二个形式,我有两个DataGridView S,一个表和一个用于领域。

所以,当我点击的DataGridView1 =>DataGridView2任何表显示它的字段:

2

当我DataGridView1即可从Form1得到ComboBox值来使用它Form2我有以下错误:

Failed to connect to server.

代码:

Dim frm As New Form2 
prd.ServerConnection = New ServerConnection(frm.ComboServer.Text) ' here the error 
prd.DGVField(MetroGridTables, MetroGridField) 

我使用Form1进行连接,并使用Form2进行操作。

+0

你说的连接存储在'form1'。然而,你将'frm'声明为'Form2'并尝试从中读取连接。不仅它是错误的形式,它也很可能是空的,因为它刚创建。由于其混乱的性质,我不确定这个问题是重复的。候选人之间将是http://stackoverflow.com/q/33765071/11683和http://stackoverflow.com/q/22078219/11683。 – GSerg

+0

是的连接存储在form1的问题只是在form2当我尝试使用此代码从form1调用连接服务器 'prd.ServerConnection =新的ServerConnection(frm.ComboServer.Text) –

+1

你应该考虑存储表单之外的连接完全。你让访问变得困难。 – Bugs

回答

1

这个问题有点令人困惑,但这是我如何将变量从一种形式传递给另一种形式。

创建一个class/w变量。

Public Class Variables 

    Public Shared Property imavariable As String 
     Get 
      Return m_imavariable 
     End Get 
     Set(value As String) 
      m_imavariable = value 
     End Set 
    End Property 
    Private Shared m_imavariable As String 

End Class 

从表格1 ... variables.imavariable = string 阅读来自窗口2的变量设定变量.... string = variables.imavariable

1

最简单的方法从一种形式到另一种传递一个值被实现New方法在窗体上要传递的价值:

Form1

Public Class Form1 

    Private Sub btnPass_Click(sender As Object, e As EventArgs) Handles btnPass.Click 

     Dim form As New Form2(TextBox1.Text) 
     form.Show() 

    End Sub 

End Class 

Form2

Public Class Form2 

    Public Sub New(ByVal value As String) 

     ' This call is required by the designer. 
     InitializeComponent() 

     Label1.Text = value 

    End Sub 

End Class 

截图:

enter image description here

相关问题