0

問題が発生していますが、何が問題なのか正確にはわかりません。コードは以下のとおりです。

Imports System.Data.SqlClient
Imports System.Data
Public Class FormAdd

Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
    FormAdmin.Show()
    Me.Hide()
End Sub

Private Sub btnAdd_Click(ByRef Success As String, ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Call AddUser(Success)
    MsgBox(" " & Success & " ")
End Sub
Private Sub AddUser(ByRef Success As String)
    lblAdmin.Text = Str(chkAdminAccount.Checked)
    Dim con As New SqlConnection
    Dim lrd As SqlDataReader
    Dim inscmd As New SqlCommand

    inscmd.Parameters.AddWithValue("@Username", txtUsername.Text.Trim())
    txtUsername.Text = txtUsername.Text
    inscmd.Parameters.AddWithValue("@Password", txtPassword.Text.Trim)
    txtPassword.Text = txtPassword.Text
    inscmd.Parameters.AddWithValue("@Name", (txtName.Text.Trim))
    txtName.Text = txtName.Text
    inscmd.Parameters.AddWithValue("@AdminAccount", lblAdmin.Text.Trim)
    lblAdmin = lblAdmin
    con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Alwyn\Desktop\Computing A2 Alwyn\Comp4ProjectRoomBookingSystem\WindowsApplication1\WindowsApplication1\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
    Try
        con.Open()
        inscmd.CommandText = "INSERT INTO Admin (Username, Password, Name, AdminAccount) VALUES (@Username, @Password, @Name, @AdminAccount)"
        inscmd.Connection = con
        inscmd.ExecuteNonQuery()

    Catch ex As Exception
        MsgBox("Could not add User" & ex.Message & " ")
    Finally
        con.Close()
        inscmd.Parameters.Clear()
        Success = "User has been added"
    End Try

End Sub

End Class

エラーメッセージは次のとおりです。

メソッド 'Private Sub btnAdd_Click(ByRef Success As String, sender As Object, e As System.EventArgs)' は、互換性のある署名がないため、イベント 'Public Event Click(sender As Object, e As System.EventArgs)' を処理できません。C:\Users\Alwyn\Desktop\Computing A2 Alwyn\Comp4ProjectRoomBookingSystem\WindowsApplication1\WindowsApplication1\FormAdd.vb 10 130 WindowsApplication1

よろしくお願いします。

4

2 に答える 2

1

btnAdd_Click はイベント ハンドラーです。定義済みの署名を変更することはできません

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As  System.EventArgs) Handles btnAdd.Click
    Dim Success as string
    Call AddUser(Success)
    MsgBox(" " & Success & " ")
End Sub

宣言から Success 変数を削除し、イベント ハンドラー内にローカル変数として挿入します。もちろん、クリックイベントの外でもその変数が必要な場合は、フォームグローバルレベルで宣言する必要があります

于 2013-03-29T15:17:58.703 に答える
0

署名を介して成功を送信したい場合は、いつでも署名内でオプションの呼び出しを行うことができます。(元:

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs, Optional ByRef Success As String = Nothing ) Handles btnAdd.Click
    If Success IsNot Nothing then 
            Call AddUser(Success)
            MsgBox(" " & Success & " ")
    End If
End Sub

オプションのキーワードを使用する場合、sender と e の後に、現在のやり方でまったく問題はないはずです。

于 2013-03-29T18:52:44.543 に答える