0

最近、プロジェクトを VB6 から VB.NET2008 に変換しました。ここでの変換は、作成したモジュールからフォームを制御するサブであり、エラーは次のようなものでした

「cmdAdd は System.Windows.Forms.Form のメンバーではありません」

Public Sub ButtonSet(ByRef frmObj As System.Windows.Forms.Form)
    frmObj.cmdAdd.Visible = True
    frmObj.cmdCopy.Visible = True
    frmObj.cmdEdit.Visible = True
    frmObj.cmdCorrection.Visible = True
End Sub

その呼び出し方法:

Private Sub frmAPNote_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
ButtonSet(Me)
End Sub
4

1 に答える 1

1

パラメータ タイプを に変更しますYourFormName

Public Sub ButtonSet(ByRef frmObj As frmAPNote)
    frmObj.cmdAdd.Visible = True
    frmObj.cmdCopy.Visible = True
    frmObj.cmdEdit.Visible = True
    frmObj.cmdCorrection.Visible = True
End Sub

PS: オブジェクトの ByRef パラメータ タイプを指定する必要はありません。

問題は、「frmAPNote」だけでなく、「frmARNote」や「​​frmRTNote」などの他の形式でも呼び出されるモジュール内のサブです。

Form.Controlsコレクションから特定のコントロールの参照を取得できます。

Public Sub ButtonSet(ByVal frmObj As Form)
    Dim btnAdd = frmObj.Controls("btnAdd")

    If Not IsNothing(btnAdd) Then
        btnAdd.Visible = False
    End If

    ....
End Sub
于 2012-06-20T05:05:14.833 に答える