2

現在のフォームで別のフォームから public サブルーチンを呼び出す際に問題が発生しています。パブリックサブを呼び出そうとしているフォームは、呼び出しを行うときに開いています。私はこのアプリケーションでパブリック サブルーチンを呼び出すこの方法を使用してきましたが、これまでは常に機能していました。しかし、今、次のエラーが発生しています...

エラー 1 非共有メンバーへの参照には、オブジェクト参照が必要です。

これが基本的な概要です....作業指示システムであるメインフォーム(frmWorkOrdersMain)があります。私のメイン フォームは、個々の作業指示書を処理するサブ フォーム (frmWorkOrder) を開きます。frmWorkOrder にパーツを追加します。frmWorkOrder は、サブ フォーム (Form1) を開きます。Form1 は arraylist 内のパーツのリストを作成します。このリストを frmWorkOrder 内のパブリック サブルーチンに渡したいと考えています。しかし、上記のエラーが表示されます。

ここで、frmWorkOrderMain のパブリック サブルーチンを使用して、frmWorkOrdersMain の特定の DGV を frmWorkOrder から完全に更新します。

frmWorkOrderMain のパブリック サブ...

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 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 非共有メンバーへの参照には、オブジェクト参照が必要です。

事前にヘルプ、ガイダンス、または指示をいただきありがとうございます。ダン

4

1 に答える 1