トップ回答者
エラーになります

質問
-
お世話になります
下記の記述をして実行するとエラーになります
フォームにはボタンを2つ貼り付けていますが自分で呼び出せないのはなぜですか?
Button2_click' は宣言されていません。アクセスできない保護レベルになっています。 →どこで宣言すればいいのですか
ご指導ください
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Call Button2_click(Button1, e)
End Sub
End Class- 編集済み moriuchi 2015年5月21日 5:54
回答
-
moriuchi さま よろしく。
ご自分でお書きの(きっと Form1.vb)の Public Class Form1 のコードの中に、
Private Sub Button2_Click( ... という行はありますか?。
フォームにボタンを貼り付けただけでは上のブロックは自動生成されません。
その状態で、ご提示のコードを実行すれば、
Button2_Click というものは存在しないので、
お書きの様なエラーメッセージとなって通知されます。
貼り付けたボタン(コントロール)をダブルクリックする事で、自動生成されます。
生成されるのは、コントロールに対して代表的なイベントのハンドラー(複数行のコードのブロックの雛形)です。
- 編集済み ShiroYuki_Mot 2015年5月21日 7:30 てにをは訂正
- 回答の候補に設定 星 睦美 2015年5月22日 0:49
- 回答としてマーク 星 睦美 2015年5月26日 4:37
-
> その中の6章の部分です。同じようにやっているのですが・・・・
Button1 の Click イベントのプロシージャ Button1_Click は、参考にされている記事の「2.イベントプロシージャの作り方」をみてご自分で作ったのですよね?
Button2 の Click イベントのプロシージャ Button2_Click は作りましたか? 作ってなければ Button1 と同様にしてプロシージャ Button2_Click を作ってから試してみてください。
-
> これで実行したらButton2が呼び出されたのがどのようにしたらわかるのですか?
Button2_Click プロシージャにブレークポイントを設定してデバッグ実行してみる・・・と言っても、すぐにはやり方が分からないですよね。
であれば、取りあえずは、「5.イベントとプロシージャを動的に結びつける」に書いてあったように、Button2_Click プロシージャの中に MsgBox を配置して、それで確認してはいかがですか?
#デバッガを使えるようになることは開発を行ううえでホントに重要なことです。今回はとりあえず MsgBox で確認するとしても、デバッガの使い方は勉強されることをお勧めします。デバッガが使えなければ開発はできないと言っても過言ではありません。
- 回答としてマーク 星 睦美 2015年5月26日 4:36
すべての返信
-
> Button2_click' は宣言されていません
というエラーメッセージの通りではないのですか? 全体的なコードはどうなっているのでしょうか?
#質問する際は最初にご自分の環境(OS, .NET, Visual Studio のバージョンなど)に関する情報を最低書いていただけませんか?
#それから、局所的な質問だけでなく、全体的なシナリオを含めてやりたいことを書いていただけると、質問のことはできないけど、やりたいことはこうすれば実現できるという代案が出てくるかもしれませんので、できればそうすることをお勧めします。
#適切に情報が提供されていれば、回答者が質問者さんの状況を的確に把握でき、タイムリーで的を得た回答が得られるということで、質問者さんにもメリットがあります。ガイドラインも出ていますので目を通していただければと思います。
フォーラムのご利用方法(質問の投稿)について
https://social.technet.microsoft.com/Forums/ja-JP/home?forum=announceja&announcementId=587d27f8-adc8-432a-905c-81375f8a05ec- 編集済み SurferOnWww 2015年5月21日 6:29 誤記訂正
-
すみません。質問の仕方が悪かったです。PCはWindows8.1VB2013で勉強しています。
勉強しているサイトはhttp://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard10.htmです
その中の6章の部分です。同じようにやっているのですが・・・・
よろしくお願いいたします
イベントプロシージャはイベントが発生したときに自動的に呼び出されますが、プロシージャである以上、自分で呼び出すこともできます。次のプログラムはButton1がクリックされたときにButton2のClickイベントプロシージャを呼び出します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call Button2_Click(Button1, e)
End Sub
■リスト10:イベントプロシージャを自分で呼び出す
この例では律儀に2つの引数をちゃんと渡していますが、何も渡さないということも可能です。何も渡さない場合は次のようにキーワードNothing(読み方:Nothing = ナッシング)を指定します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call Button2_Click(Nothing, Nothing)
End Sub
■リスト11:イベントプロシージャを自分で呼び出す
この場合、Button2_Clickプロシージャ内で引数を利用している場合、エラーになる可能性がありますので注意してください。
-
moriuchi さま よろしく。
ご自分でお書きの(きっと Form1.vb)の Public Class Form1 のコードの中に、
Private Sub Button2_Click( ... という行はありますか?。
フォームにボタンを貼り付けただけでは上のブロックは自動生成されません。
その状態で、ご提示のコードを実行すれば、
Button2_Click というものは存在しないので、
お書きの様なエラーメッセージとなって通知されます。
貼り付けたボタン(コントロール)をダブルクリックする事で、自動生成されます。
生成されるのは、コントロールに対して代表的なイベントのハンドラー(複数行のコードのブロックの雛形)です。
- 編集済み ShiroYuki_Mot 2015年5月21日 7:30 てにをは訂正
- 回答の候補に設定 星 睦美 2015年5月22日 0:49
- 回答としてマーク 星 睦美 2015年5月26日 4:37
-
> その中の6章の部分です。同じようにやっているのですが・・・・
Button1 の Click イベントのプロシージャ Button1_Click は、参考にされている記事の「2.イベントプロシージャの作り方」をみてご自分で作ったのですよね?
Button2 の Click イベントのプロシージャ Button2_Click は作りましたか? 作ってなければ Button1 と同様にしてプロシージャ Button2_Click を作ってから試してみてください。
-
-
お世話になります
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Call Button2_click(Button1, e)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
End Sub
End Classこれで実行したらButton2が呼び出されたのがどのようにしたらわかるのですか?
本当に初歩的ですみません
-
> これで実行したらButton2が呼び出されたのがどのようにしたらわかるのですか?
Button2_Click プロシージャにブレークポイントを設定してデバッグ実行してみる・・・と言っても、すぐにはやり方が分からないですよね。
であれば、取りあえずは、「5.イベントとプロシージャを動的に結びつける」に書いてあったように、Button2_Click プロシージャの中に MsgBox を配置して、それで確認してはいかがですか?
#デバッガを使えるようになることは開発を行ううえでホントに重要なことです。今回はとりあえず MsgBox で確認するとしても、デバッガの使い方は勉強されることをお勧めします。デバッガが使えなければ開発はできないと言っても過言ではありません。
- 回答としてマーク 星 睦美 2015年5月26日 4:36
-
moriuchi さん、こんにちは。
フォーラム オペレーターの星 睦美です。今回の質問の元になっているサンプル プログラムは以下に記載されている内容ですね。
・Visual Basic 中学校
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard10.htmページの内容の転載が了承されていないこと、学習者向けに「掲示板」を用意されていることから、MSDN フォーラムよりも「掲示板」で質問を行うほうがページの趣旨にかなった利用方法ではないかと思います。
ご自身のプログラミングに関する質問は遠慮なくフォーラムに投稿いただければと思います。今後ともVisual Basic フォーラムをお役立てください。
フォーラム オペレーター 星 睦美 - MSDN Community Support