Private Sub tsGradovi_Click(sender As Object, e As EventArgs) Handles tsGradovi.Click
For Each f As Form In Application.OpenForms
If TypeOf f Is frmGradovi Then
f.Activate()
Return
End If
Next
Dim f2 As New frmGradovi
f2.MdiParent = Me
f2.Show()
f2.WindowState = FormWindowState.Maximized
resetdgvGradova()
End Sub
通过这种方式,我将Child表单添加到我的主表单中 在那个frmGradovi表单上我有datagridview。现在我在课程中添加了课程。
如何从我的类中添加datagridview源代码。
此代码没有帮助
frmGradovi.DGV.DataSource = SQLDataset.Tables(0)
可能因为frmGradovi是form1的mdi孩子。
编辑:
在课程konekcija我需要为frmGradovi表单设置数据源。但是frmGradovi形式是Form1的mdi子形式
答案 0 :(得分:2)
避免这些类型的难题的一种方法是不要编写以形式为中心的代码。它们基本上是用于收集用户输入的沙箱。另一个元素是显式实例表单:在您的代码f2
中是frmGradovi
的实例。尝试在其他地方引用frmGradovi
有可能会创建一个新的默认实例(您之后在Forms集合中有两种类型frmGradovi
)。
我不知道 Gradovi 或 konekcija 是什么,所以我将使用Customer
示例。我的应用可能有frmCustomer
和Customer
类。当需要显示某个客户,而不是MDI父表单代码或按钮单击创建表单时,我将该作业留给Customer
类:
Public Class Customer
' myFrm is an instance of frmCustomer, which is a Type
Private myFrm As frmCustomer
Private myDT As DataTable
Public Sub Display(Id As Int32)
CustId = Id
If myFrm Is Nothing Then
myFrm = New frmCustomer
' MDI boilerplate code
'...
' one time setup code like populate static CBOs:
'...
End If
UpdateDisplay()
myFrm.BringToFront()
End Sub
Public Sub UpdateDisplay()
' display code when something changes such as show new selected Customer
' e.g.:
LoadCustDataToDataTable(CustId)
With myFrm
.tbfirstName.Text = FirstName
.tbLastName.Text = LastName
' ...etc
.dgvPastOrders.DataSource = myDT
End With
End Sub
" key"是客户类负责客户表格。它创建它并保留对它的引用。当用户点击Save
时,该任务也会被卸载到Customer.Save
方法。
当用户关闭该表单时,您还可以添加其他旋转处理(如果允许他们关闭而不是隐藏它)。在您当前的方法中,您的类可以根据需要从集合中获取对其表单的引用。