我目前在我的应用程序中有大约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
这是一个聪明的主意吗?或者我应该/我可以直接调用上一个表单中的函数吗?
只是想看看我是否在正确的轨道上,如果没有,我怎么能以合理的方式做到这一点?
答案 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
同样,我可能误解了这个问题,如果是这样的话,请道歉。