我在使用当前表单中的其他表单调用公共子时遇到问题。 当我尝试拨打电话时,我试图呼叫公共子的表单是打开的。 我在这个应用程序中使用了这种调用public subs的方法,并且它们一直在使用它们。但现在我收到以下错误......
错误1对非共享成员的引用需要对象引用。
这是基本的运行.... 我有一个主要表单(frmWorkOrdersMain),它是一个工单系统。 我的主窗体打开一个子窗体(frmWorkOrder)来处理各个工单。 要向frmWorkOrder添加部件。 frmWorkOrder打开一个子表单(Form1)。 Form1构造了一个arraylist中的部分列表,我想将此列表传递给frmWorkOrder中的public sub。但是我得到了上面列出的错误。
现在我使用frmWorkOrderMain中的public sub完全从frmWorkOrder刷新frmWorkOrdersMain中的某些DGV。
frmWorkOrderMain中的Public Sub ...
Public Sub ReloadWorkOrdersAndJobs()
Dim DS1 As New DataSet
Dim DS2 As New DataSet
Dim DB As New DBWrapper
DS1 = DB.GetCustWO(CInt(cboWOCust.SelectedValue))
DS2 = DB.GetCustJobs(CInt(cboWOCust.SelectedValue))
dgvWO2.DataSource = DS1.Tables("WorkOrders")
dgvJobs2.DataSource = DS2.Tables("Jobs")
dgvWO2.Columns(0).Width = 90
dgvWO2.Columns(1).Width = 493
dgvWO2.Columns(2).Width = 85
dgvWO2.Columns(3).Width = 85
dgvJobs2.Columns(0).Width = 80
dgvJobs2.Columns(1).Width = 353
dgvJobs2.Columns(2).Width = 80
dgvJobs2.Columns(3).Width = 80
dgvJobs2.Columns(4).Width = 80
dgvJobs2.Columns(5).Width = 80
WOMainView()
End Sub
在frmWorkOrder中调用...
Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles tsbSaveWO.Click
(...code...)
frmDMSWorkOrders.ReloadWorkOrdersAndJobs()
End Sub
一直都很好。我可以在我的申请表中以任何形式表示。 现在这里是我的公共子工作无法工作
frmWorkOrder中的Public Sub ...
Public Sub AddParts(ByVal PartList As ArrayList)
Dim P As New ArrayList
P = PartList
(...CODE....)
End Sub
以下是来自form1的电话......
Private Sub btnSaveParts_Click(sender As System.Object, e As System.EventArgs) Handles btnSaveParts.Click
Dim I As Integer
Dim PartList As New ArrayList
Dim P As Part
For I = 0 To dgvPartsToBeAdded.RowCount - 1
P = New Part
P.ID = CInt(dgvPartsToBeAdded.Rows(I).Cells(0).Value)
P.Brand = CStr(dgvPartsToBeAdded.Rows(I).Cells(1).Value)
P.ModelNum = CStr(dgvPartsToBeAdded.Rows(I).Cells(2).Value)
P.PClass = CInt(dgvPartsToBeAdded.Rows(I).Cells(7).Value)
P.UPC = CStr(dgvPartsToBeAdded.Rows(I).Cells(4).Value)
P.Description = CStr(dgvPartsToBeAdded.Rows(I).Cells(3).Value)
P.Serial = CStr(dgvPartsToBeAdded.Rows(I).Cells(5).Value)
P.Notes = CStr(dgvPartsToBeAdded.Rows(I).Cells(8).Value)
P.ServiceTag = CStr(dgvPartsToBeAdded.Rows(I).Cells(6).Value)
PartList.Add(P)
Next
frmWorkOrder.AddParts(PartList)
End Sub
就像我所看到的那样,就像使用第一个公共子一样,但我似乎无法解决我收到的错误......
错误1对非共享成员的引用需要对象引用。
感谢您提前提供任何帮助,指导或指导。 丹
答案 0 :(得分:4)
情况正如错误消息所述。 表单是一个类,因此您需要有一个实例来调用其方法。
Public Class TestCl
Public Sub Test
End Sub
End Class
TestCl.Test()
..错误
Dim tC as New TestCl
tC.Test()
..确定
VB6具有自动创建表单实例的概念,但据我所知,它不是.net的情况。