Hier ist das Problem:Warum ein privater Ereignishandler in ASP.NET nicht funktioniert
Ich habe ein einfaches ASP.NET-Formular mit 2 Schaltflächen.
Einer von ihnen wird durch Ziehen der Taste von den Werkzeugen erstellt und die andere ich direkt in HTML erstellt:
<body>
<form id="Form1" method="post" runat="server">
<asp:Button OnClick="ABC" Runat="server" Text="rrr" id="Button1"></asp:Button>
<asp:Button id="Button2" runat="server" Text="Button"></asp:Button>
</form>
</body>
Button2 wird mit Werkzeugen erstellt und hat die folgenden Event-Handler:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim s As String = ""
End Sub
Dieser "Private Event-Handler läuft ohne Probleme.
Aber für die Schaltfläche, die unter HTML erstellt wird, haben wir den folgenden Event-Handler:
Private Sub ABC(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer = 0
End Sub
Für diese ich folgende complile Fehler:
Compiler Error Message: BC30390: 'WebApplication9.WebForm1.Private Sub ABC(sender As Object, e As System.EventArgs)' is not accessible in this context because it is 'Private'.
Wenn ich den Event-Handler Rahmen von Private zu schützen ändern dies funktionieren wird. Frage ist, warum privat für einen Event-Handler arbeitet, aber nicht für den anderen.
Wenn Sie 'OnClick' ** und **' Handles' haben, versuchen Sie, es zweimal zu verbinden - einmal aus dem Code dahinter und einmal aus dem HTML. Wenn Sie zu 'Protected' wechseln, werden Sie feststellen, dass der Event-Handler zweimal aufgerufen wird (wie Sie ihn gerade haben). Entfernen Sie das 'OnClick' im HTML –
Ich habe gerade versucht," Hanldes "hinzuzufügen, nachdem ich den Kompilierungsfehler sah. Ich bekomme den gleichen Kompilierungsfehler mit oder ohne das Handler-Schlüsselwort. –
Ich sagte, entfernen Sie die 'OnClick' im HTML, nicht die' Handles'. –