問題は次のとおりです。
ボタンが 2 つある単純な ASP.NET フォームがあります。
1 つはツールからボタンをドラッグして作成したもので、もう 1 つは HTML で直接作成したものです。
<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 はツールを使用して作成され、次のイベント ハンドラーがあります。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim s As String = ""
End Sub
この「プライベート イベント ハンドラは問題なく実行されます。
ただし、 HTML で作成されたボタンには、次のイベント ハンドラーがあります。
Private Sub ABC(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer = 0
End Sub
この場合、次のコンパイル エラーが発生します。
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'.
イベント ハンドラーのスコープを Private から protected に変更すると、これが機能します。問題は、プライベートが一方のイベントハンドラーでは機能するのに、もう一方のイベントハンドラーでは機能しない理由です。