none
エラーになります RRS feed

  • 質問

  • お世話になります

    下記の記述をして実行するとエラーになります

    フォームにはボタンを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
    2015年5月21日 5:47

回答

  • 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
    2015年5月21日 7:28
  • > その中の6章の部分です。同じようにやっているのですが・・・・

    Button1 の Click イベントのプロシージャ Button1_Click は、参考にされている記事の「2.イベントプロシージャの作り方」をみてご自分で作ったのですよね?

    Button2 の Click イベントのプロシージャ Button2_Click は作りましたか? 作ってなければ Button1 と同様にしてプロシージャ Button2_Click を作ってから試してみてください。

    • 回答の候補に設定 星 睦美 2015年5月22日 0:49
    • 回答としてマーク 星 睦美 2015年5月26日 4:36
    2015年5月21日 8:21
  • > これで実行したらButton2が呼び出されたのがどのようにしたらわかるのですか?

    Button2_Click プロシージャにブレークポイントを設定してデバッグ実行してみる・・・と言っても、すぐにはやり方が分からないですよね。

    であれば、取りあえずは、「5.イベントとプロシージャを動的に結びつける」に書いてあったように、Button2_Click プロシージャの中に MsgBox を配置して、それで確認してはいかがですか?

    #デバッガを使えるようになることは開発を行ううえでホントに重要なことです。今回はとりあえず MsgBox で確認するとしても、デバッガの使い方は勉強されることをお勧めします。デバッガが使えなければ開発はできないと言っても過言ではありません。

    • 回答としてマーク 星 睦美 2015年5月26日 4:36
    2015年5月21日 10:33

すべての返信

  • > 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 誤記訂正
    2015年5月21日 6:09
  • すみません。質問の仕方が悪かったです。PCはWindows8.1VB2013で勉強しています。

    勉強しているサイトはhttp://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard10.htmです

    その中の6章の部分です。同じようにやっているのですが・・・・

    よろしくお願いいたします

    イベントプロシージャはイベントが発生したときに自動的に呼び出されますが、プロシージャである以上、自分で呼び出すこともできます。次のプログラムはButton1がクリックされたときにButton2Clickイベントプロシージャを呼び出します。

    VB.NET2002対応 VB.NET2003対応 VB2005対応

    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 = ナッシング)を指定します。

    VB.NET2002対応 VB.NET2003対応 VB2005対応

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Call Button2_Click(NothingNothing)

    End Sub

    ■リスト11:イベントプロシージャを自分で呼び出す

    この場合、Button2_Clickプロシージャ内で引数を利用している場合、エラーになる可能性がありますので注意してください。

     

    2015年5月21日 7:03
  • 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
    2015年5月21日 7:28
  • > その中の6章の部分です。同じようにやっているのですが・・・・

    Button1 の Click イベントのプロシージャ Button1_Click は、参考にされている記事の「2.イベントプロシージャの作り方」をみてご自分で作ったのですよね?

    Button2 の Click イベントのプロシージャ Button2_Click は作りましたか? 作ってなければ Button1 と同様にしてプロシージャ Button2_Click を作ってから試してみてください。

    • 回答の候補に設定 星 睦美 2015年5月22日 0:49
    • 回答としてマーク 星 睦美 2015年5月26日 4:36
    2015年5月21日 8:21
  • 【追伸】

    質問者さんが以前立てた 2 件のスレッドは、いずれも質問者さんが最後までフォローされておらず、最終的にどのように解決できたのか分からないまま、管理者の方がクローズしています。

    ご自分が立てたスレッドは、最終的にどのように解決できたのかをきちんと書いていただき、役に立った回答にチェックマークを付けて(複数加)、クローズしていただくようお願いします。

    先の私のレスで紹介したガイドラインにも書かれていますが、このフォーラムは「ユーザー同士が技術的な情報を交換しあうためのコミュニティ」です。その点に配慮いただけますようお願いします。

    2015年5月21日 8:35
  • 前の2件はまだ解決できていませんじっくりやってから返答させていただくつもりでした申し訳ございません

    今後は解決できてから次に進むようにいたします。

    2015年5月21日 9:50
  • お世話になります

        

    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が呼び出されたのがどのようにしたらわかるのですか?

    本当に初歩的ですみません

    2015年5月21日 10:13
  • > これで実行したらButton2が呼び出されたのがどのようにしたらわかるのですか?

    Button2_Click プロシージャにブレークポイントを設定してデバッグ実行してみる・・・と言っても、すぐにはやり方が分からないですよね。

    であれば、取りあえずは、「5.イベントとプロシージャを動的に結びつける」に書いてあったように、Button2_Click プロシージャの中に MsgBox を配置して、それで確認してはいかがですか?

    #デバッガを使えるようになることは開発を行ううえでホントに重要なことです。今回はとりあえず MsgBox で確認するとしても、デバッガの使い方は勉強されることをお勧めします。デバッガが使えなければ開発はできないと言っても過言ではありません。

    • 回答としてマーク 星 睦美 2015年5月26日 4:36
    2015年5月21日 10:33
  • わかりました。MsgBoxで確認します.ありがとうございます。できました。これで第9回はできましたので前のスレッドもやってみます
    2015年5月21日 10:46
  • moriuchi さん、こんにちは。
    フォーラム オペレーターの星 睦美です。

    今回の質問の元になっているサンプル プログラムは以下に記載されている内容ですね。
    ・Visual Basic 中学校
    http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard10.htm

    ページの内容の転載が了承されていないこと、学習者向けに「掲示板」を用意されていることから、MSDN フォーラムよりも「掲示板」で質問を行うほうがページの趣旨にかなった利用方法ではないかと思います。

    ご自身のプログラミングに関する質問は遠慮なくフォーラムに投稿いただければと思います。今後ともVisual Basic フォーラムをお役立てください。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2015年5月26日 5:00