在VB.Net中传递两个表单之间的参数

时间:2016-11-10 15:25:23

标签: vb.net forms datagridview

我目前在我的应用程序中有大约5个表单。我正在构建第6个表单 - 但是,我希望能够从所有表单中访问它。在frmSummary中我计划添加一个DataGridView,我将在其中显示与该表单相关的数据。我认为我应该创建一个全局变量,例如

dim FrmName as String

在每个表单中我都会有一个cmdSummary按钮,以便在click_event上,我会做类似的事情

frmName ="CustomerInfo"

目前我的应用程序设置的方式是我有一个mdiForm并且在其中,每个表单都是一个孩子,所以在打开新表单时我做了类似的事情......

Private Sub cmdSummary_Click(sender As Object, e As EventArgs) Handles cmdSummary.Click
    Dim NewMDIChild As New frmClientEligibilityReferral()

    frmName = "CustomerInfo" --since this will be comeing from frmCustomerInfo
    NewMDIChild.MdiParent = MDIform1
    NewMDIChild.Show()
    MDIForm1.Show()

End Sub

所以我在打开新表格时做了类似的事情。我的问题是如何将参数传递给我的表单frmSummary ....这里是我目前要完成的事情......

Private Sub FrmSummary_Load(sender As Object, e As EventArgs) Handles Me.Load

    Me.MdiParent = MDIForm1

    InitializeComponent()

'Here I want to call a function to load the datagridView(with g_frmName)see below...
    call LoadDataGrid(frmName)
End Sub
这是一个聪明的主意吗?或者我应该/我可以直接调用上一个表单中的函数吗? 只是想看看我是否在正确的轨道上,如果没有,我怎么能以合理的方式做到这一点?

2 个答案:

答案 0 :(得分:2)

如果只有一个frmSummary,则可以将其设为singleton

在frmSummary中,输入以下代码:

Private Shared _instance As frmSummary

Private Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
End Sub

Public Shared Function GetInstance() As frmSummary
    If _instance Is Nothing Then
        _instance = New frmSummary()
    End If
    Return _instance
End Function

Public Sub PutDataInGrid(data As Object)
    Me.DataGridView1.' put data in it
End Sub

你可以从其他形式访问它

Dim myFrmSummary = frmSummary.GetInstance()
myFrmSummary.PutDataInGrid(myData)

答案 1 :(得分:1)

如果我正确理解了这个问题......

您可以在New声明子区域中设置所需的参数(其中InitializeComponent()应该是)。在表单上,​​声明变量并为每个参数值设置一个,并以这种方式设置表单..

可能是一个例子;

Public Class frmSummary

Dim var1 as String = ""
Dim var2 as Boolean = True

Public Sub New(ByVal parameter1 as String, ByVal parameter2 As Boolean)

  var1 = parameter1
  var2 = parameter2

 InitializeComponent()


End Sub

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

  If var1 = "This String" Then
   If var2 = False Then
    sql = "SELECT * FROM myTable"
      ' Rest of your code to get the DGV data
     DataGridView1.DataSource = Dt
    Else
   End If
  End If

End Sub

同样,我可能误解了这个问题,如果是这样的话,请道歉。