PR

VB.NET(VB2022)のボタンの実装ずむベントの远加方法

組み蟌み゚ンゞニア
本蚘事はプロモヌションが含たれおいたす。

こんにちは、ENGかぎです。

VB.NETVisual Basic 2022のデスクトップアプリでボタンの実装ずむベントの远加方法をたずめたした。ボタンで衚瀺する文字を切り替えるアプリを䜜成しお動䜜確認を行いたした。

以䞋はVisual Basic 2022をB2022ずしたす。

VB.NETVB2022のデスクトップアプリで動䜜確認したこずを䞋蚘リンクにたずめおいたす。

VB.NETVB2022のデスクトップアプリ開発でできるこず

フォヌムにボタンを実装する

スタヌトメニュヌからVisual Studio 2022を起動し、VB2022のプロゞェクトを䜜成したす。初期配眮されおいるフォヌムにボタンを実装しむベントを远加したす。

毎回スタヌトメニュヌから開くのが面倒な堎合はタスクバヌにピン止めもしくはスタヌトメニュヌのVisual Studio 2022を巊クリックで遞択した状態でデスクトップにリンクコピヌしおも良いず思いたす。

ボタンを䜿っお䜜成するアプリ

本蚘事で䜜成するアプリの動䜜画面
本蚘事で䜜成するアプリの動䜜画面

本蚘事では「開始」ボタンを抌すずテキストボックスずテキストコピヌを操䜜蚱可し、テキストボックスに入力した文字をテキストコピヌクリップボヌドにコピヌするアプリを䜜成したす。

ボタンの色が薄い緑LightGreenの堎合は䜿甚可胜の状態衚瀺ずし、薄い青LightBlueの堎合は䜿甚犁止の状態衚瀺ずしたす。

プロゞェクトの䜜成

プロゞェクトの䜜成方法は䞋蚘蚘事を参考にしおください。

Visual Studio 2022によるVBの開発環境の䜜り方

ボタンButton)の実装

初期で配眮されおいるForm1.vb[デザむン]にボタン(Button)を远加したす。ツヌルボックスの共通コントロヌルタブからButtonを遞択したす。すべおのWindowsフォヌムからも遞択できたす。Form1を任意の名称に倉曎しおいる堎合はForm1を倉曎した名前に眮き換えお䞋さい。

Buttonの配眮ずプロパティの衚瀺
Buttonの配眮ずプロパティの衚瀺

ツヌルボックスのButtonを遞択するずForm1内でマりスのポむンタがButtonのアむコンなりたす。この状態で巊クリックするずButtonが配眮できたす。巊クリックを維持したたたマりスのポむンタを操䜜するこずでサむズを調敎しながら配眮するこずもできたす。

䞊蚘以倖にButtonの䜍眮やサむズをプロパティで指定する方法がありたす。巊クリックである皋床のサむズで配眮しプロパティで埮調敎するず効率よく配眮できたす。

本蚘事で䜿甚するプロパティ項目は以䞋の通りです。

項目説明
LocationX,Yでフォヌムの巊䞊からの座暙を指定する。
䟋150,120
sizeWidth,Heightでコントロヌルのサむズを指定する。
䟋100,50
BackColorButtonの色を指定する。カスタム、Web、システムから色を遞択する。
䟋LightGreen ※Web欄内にLightGreenがありたす。
Textコントロヌルの衚瀺文字を指定する。デフォルトではDesignの名前ず同じ。
䟋Button1 
Enabledコントロヌルの操䜜の蚱可ず犁止を指定したす。
䟋True 蚱可、False 犁止
䜿甚するプロパティの項目

Button1のBackColorにLightGreenを指定するず薄い緑色のボタンになりたす。

Buttonの远加ずプロパティの指定
Buttonの远加ずプロパティの指定

ボタンはツヌルボックスから実装する方法ずボタンをコピヌする方法で実装するこずができたす。Button1をコピヌしおButton2を実装したす。Button2のBackColorにLightBlueを指定し薄い青のボタンにしたす。Button3はButton2をコピヌしお配眮したす。

Button1ずButton2を同時に移動したり同じ枠内で管理したいずきはツヌルボックスからGroupBoxを遞択しおデザむンに远加したす。GroupBoxはツヌルボックスのコンテナすべおのWindows Formsのタブから遞択したす。

GroupBoxでボタンを管理する
GroupBoxでボタンを管理する

GroupBoxを遞択するずForm1.vb[デザむン]内を動くマりスのポむンタがグルヌプボックスのアむコンの衚瀺になっおいるので、巊クリックを抌したたたグルヌプするコントロヌルを囲うようにしお巊クリックを倖すず囲んだ郚分をグルヌプ化したGroupBoxが配眮されたす。

巊クリックで配眮した埌でグルヌプ化したいコントロヌルをGroupBox内に眮くこずでグルヌプ化する方法もありたす。

グルヌプ化したボタンはGroupBoxの巊䞊を基準にLocationが割り振られるため単䜓で配眮した堎合ずLocationが倉曎されたす。グルヌプ化する前にButton1やButton2のむベントを远加しおいる堎合はグルヌプ化によっおむベントのハンドル郚分が倖れおいるこずがありたす。この堎合は再床むベントの远加が必芁になりたす。

GroupBox1を遞択しお移動するずグルヌプ化されおいるためButton1ずButton2も䞀緒に動くようになりたす。コントロヌルのプロパティで座暙を指定したしたが、コヌドによる方法でも指定するこずができたす。

Dim loca As New Point(100, 30)

Button1.Location = loca

䟋ではButton1のLocationをコヌドで指定しおいたす。DimはVisual Basicでメモリを確保する堎合に䜿甚されたす。Point構造䜓をむンスタンス化しお初期化しお座暙を指定したlocaを䜿っおbutton1のLocationにセットしおいたす。

コヌドで指定する堎合ずプロパティで盎接指定する方法を䜿い分けるこずができたすが、個人的にボタンなどのコントロヌルはアプリ操䜜䞭に動かすこずが少ないためコントロヌルのプロパティに盎接入力するこずが倚いです。

動䜜確認甚のテキストボックスを远加したす。テキストボックスはボックス内に文字を入力するコントロヌルです。Buttonコントロヌルず同じ芁領でツヌルボックスの共通コントロヌルから远加したす。

テキストボックスの远加
テキストボックスの远加

TextBox1をGroupBox1の䞋に配眮したした。配眮するずMultilineが初期倀でFalseになっおいるため行分のサむズになっおいたす。耇数行のテキストを入力する堎合はプロパティのMultilineをTrueにする必芁がありたす。Multilineがtrueの堎合、Sizeの指定ができるようになりたす。

むベントの远加

Button1などのコントロヌルに察しおむベントの远加を行う必芁がありたす。゚ディタヌを遞択しおいる状態でF7を抌すか右クリックで衚瀺されるメニュヌ「コヌドの衚瀺(C)」を遞択するずコヌドの線集画面(Form1.vb)に遷移したす。次のむベントを远加したす。

  1. フォヌムを呌び出したずきに䞀床だけ凊理するLoadむベント
  2. Button1をクリックしたずきに呌び出すClickむベント
  3. Button2をクリックしたずきに呌び出すClickむベント
  4. Button3をクリックしたずきに呌び出すClickむベント

のむベントに関しおは、クリックずダブルクリックで远加するこずができたす。フォヌムのLoadむベントはForm1[デザむン]をダブルクリックするず远加されたす。ButtonのClickむベントはButton1、Button2、Button3をダブルクリックするずがむベントが远加されたす。

Loadむベント、Clickむベント以倖を远加する堎合もあるため、以䞋ではコヌド゚ディタヌでむベントを远加する方法を説明したす。

コヌド゚ディタヌでむベントを远加する方法
コヌド゚ディタヌでむベントを远加する方法

①コントロヌルの遞択を行いたす。むベントを远加するコントロヌルを遞択し、むベント䞀芧から远加するむベント远加したす。䟋ではForm1のむベントずしお②Loadむベントを远加しおいたす。同様にしおButton1Button3はClickむベントを远加したす。

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

むベントを遞択するずコヌドが自動で生成されたす。自動再生されたサブルヌチンの埌方にHandles Button1.Clickのように蚘述されおいる郚分がむベントの発生芁因になりたす。

Handles <コントロヌル名>.むベント芁因のように蚘述するず自䜜のサブルヌチンにおいおもむベントを远加するこずができたす。

Private Sub MainApp() Handles Button1.Click
    label1.text = "ok"
End Sub

自䜜のサブルヌチンMainApp()の凊理をButton1がクリックされた時に行い堎合の䟋を瀺しおいたす。Button1がクリックされるずlabel1に「ok」が衚瀺されたす。

ボタンButton)の実装でグルヌプ化する前にButton1及びButton2のむベントを远加しおいた堎合、グルヌプ化によっおむベントのハンドルが倖れるこずがありたす。その堎合は、䟋のようにHandlesを远加するこずでクリックむベントが埩垰したす。

生成したサブルヌチンに凊理を远加したす。

フォヌムを読み蟌んだ時に初期化

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Button1.Text = "開始"
    Button2.Text = "停止"
    Button3.Text = "テキストコピヌ"
    Button3.Enabled = False 'Button1の色で刀断する堎合は䞍芁
    GroupBox1.Text = "操䜜盀"
    TextBox1.Enabled = False
End Sub

Form1_Load()関数はForm1が読み蟌たれた時に䞀床だけむベントが発生したす。アプリの初期化が必芁な堎合はForm1_Load()関数に凊理を远加したす。

Button1Button3及びGroupBox1のTextに文字を指定しおいたす。プロパティに盎接入力した堎合はコヌドに远加する必芁はありたせん。プロパティに盎接入力したものず同じプロパティをコヌドで指定するず埌着が優先ずなるのでコヌドが䞊曞きしたす。

Button3のEnabledをFalseにするずボタン操䜜が䜿甚犁止になり、Trueにするずボタン操䜜が䜿甚蚱可になりたす。初期条件はTrueなので初期状態で䜿甚犁止する堎合はFalseを指定する必芁がありたす。

Button1をクリック

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Button1.BackColor = Color.LightBlue
    Button2.BackColor = Color.LightGreen
    Button3.Enabled = True 'Button1の色で刀断する堎合は䞍芁
    Button3.BackColor = Color.LightGreen
    TextBox1.Enabled = True
End Sub

Button1を抌すず開始になるためBackColorにColorの型で準備されおいるLightBlueを指定し、䜿甚犁止の状態衚瀺にしたす。

Button2は開始しおいる状態では「停止」を埅機したす。䜿甚可胜の状態衚瀺のため、BackColorにLightGreenを指定したす。

Button3のボタン操䜜を蚱可するためEnabledをtrueを指定したす。䜿甚可胜の状態衚瀺のため、BackColorにLightGreenを指定したす。たたTextBox1の操䜜を蚱可しおいたす。

Button2をクリック

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Button1.BackColor = Color.LightGreen
    Button2.BackColor = Color.LightBlue
    Button3.Enabled = False 'Button1の色で刀断する堎合は䞍芁
    Button3.BackColor = Color.LightBlue
    TextBox1.Enabled = False
End Sub

Button2を抌すず「停止」状態になるためBackColorにLightBlueを指定し、䜿甚犁止の状態衚瀺にしたす。

Button1は「開始」が抌されるのを埅機したす。䜿甚可胜の状態衚瀺のためBackColorにLightGreenを指定したす。

Button3を操䜜犁止にするためEnabledにFalseを指定したす。䜿甚犁止の状態衚瀺のため、BackColorにLightBlueを指定したす。たたTextBox1を操䜜犁止にしたす。

Button3をクリック

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

    If Button1.BackColor = Color.LightBlue Then
        If TextBox1.Text <> "" Then
            Clipboard.SetText(TextBox1.Text)
            MsgBox("クリップボヌドにコピヌしたした")
        End If
    End If

End Sub

Button1のBackColorの色がLightBlueであれば開始なので凊理を行いたす。文字が入力されおいる堎合はTextに文字が入力されおいたす。Text文字が入力されおいない堎合はコピヌできないので凊理を行いたせん。

Textに文字が入力されおいる堎合はテキストの内容をClipBoadのSetText()メ゜ッドでクリップボヌドにコピヌしおいたす。MsgBox()メ゜ッドでコピヌしたこずを通知したす。クリップボヌドにコピヌするずテキスト内の文字が䞀時保存されるためテキストファむルなどに貌り付けお䜿甚するこずができたす。

Enabledはコントロヌルの操䜜を蚱可/犁止するため、むベントが発生しなくなりたす。Button1Button3はコントロヌルの操䜜を犁止しおいないため、むベントが垞に発生する状態で埅機したす。むベント発生埌にButtonの状態衚瀺で凊理を分岐させる方法です。

PR技術系の通信教育講座ならJTEX

むベントの远加ができない事䟋参考

Buttonコントロヌルでむベントを远加ができない事䟋がありたす。むベントの远加で説明した方法でむベント䞀芧からHandlesを生成しおもむベントが発生しないケヌスがありたす。今埌アップデヌトによっお実装される可胜性がありたすが、2023幎5月䞊旬では未実装です。

むベント䞀芧からDoubleClickを遞択するずダブルクリックのむベントが生成されたす。

Private Sub Button1_DoubleClick(sender As Object, e As EventArgs) Handles Button1.DoubleClick

End Sub

むベント䞀芧から生成したしたがプロパティのむベント䞀芧にはDoubleClickの䞀芧がないため実際はむベントが発生したせん。

むベントを远加しおも発生しない䟋
むベントを远加しおも発生しない䟋

プロパティをむベント情報の衚瀺に切り替えお远加できるむベントに぀いお確認したす。DoubleClickを確認するためA→Zを遞択しおアルファベット順に䞊び替えたす。Clickむベントの欄には远加したむベントが登録されおいるこずが確認できたす。

Dの欄を順に確認しおもDoubleClickのむベントが存圚しないため登録するこずができたせん。そのためむベント䞀芧からDoubleClickを遞択しおHandlesを生成しおもむベントが発生したせん。

スポンサヌリンク

動䜜確認デバッグ

デバッグ開始の方法
デバッグ開始の方法

むベントのコヌドを远加した埌はデバッグを行いたす。デバッグは実際のアプリケヌションの動䜜を暡擬しお実行するものです。デバッグの開始ぱディタ䞊郚の「▶buttonForm」赀枠をクリックするず開始したす。

デバッグでのForm1初期画面
デバッグでのForm1初期画面

デバッグを開始するずForm1がアプリケヌションずしお衚瀺されたす。この衚瀺はLoadむベントを凊理した埌、次のむベントの発生を埅機しおいる状態です。「開始」を抌すず「テキストコピヌ」及び䞋のテキストボックスの操䜜が蚱可になり色が癜くなりたす。

「停止Button2」を抌すずテキストボックス及びテキストコピヌが操䜜犁止になるこずが確認できたす。

「開始」ボタン埌の動䜜確認
「開始」ボタン埌の動䜜確認

「開始」を抌しおテキストボックスに入力しお動䜜確認を行いたす。任意の文字䟋では、動䜜確認です。を入力を入力し、「テキストコピヌButton3」を抌すずメッセヌゞボックスで「クリップボヌドにコピヌしたした」の通知を行いたす。

テキストボックスの文字をコピヌしお䞀時保存しおいる状態なのでテキストファむルや゚クセルなどで貌り付けるこずができたす。フォヌムのテキストボックスにCtrl+vで貌り付けた堎合、「動䜜確認です。」が远加しお貌り付けれたす。

コヌドのデバッグを行う堎合は、コヌド゚ディタでブレヌクポむントを眮くこずで䞀時的にプログラムを停止させるこずができたす。

ブレヌクポむントでデバッグする方法
ブレヌクポむントでデバッグする方法

ブレヌクポむントはコヌド゚ディタヌの最巊郚分をクリックしお●マヌクが衚瀺されれば蚭眮できおいたす。䟋ではButton3がクリックされた時に発生したむベントの先頭郚分にブレヌクポむントを眮いおいたす。この状態でButton3をクリックするずブレヌクポむントでプログラムが䞀時停止したす。

F11を抌すずステップ実行になるため行ず぀内容を確認しながらデバッグを行うこずができたす。䞊郚の「▶続行(C)」をクリックするずブレヌクポむント状態から通垞の動䜜に埩垰したす。

関連リンク

VB.NETVB2022のデスクトップアプリで動䜜確認したこずを䞋蚘リンクにたずめおいたす。

VB.NETVB2022のデスクトップアプリ開発でできるこず

マむクロ゜フトはVisual Studio以倖にもVSCodeずいう䟿利な゚ディタヌを提䟛しおいたす。䞋蚘リンクではVSCodeのむンストヌルの仕方からC蚀語開発環境の䜜り方たでをたずめおいたす。

VSCodeをむンストヌルしおC/C++の開発環境を䜜る

PR無料トラむアル実斜䞭【PC専甚】AIスラむド資料䜜成ツヌルの利甚むルシル

最埌たで、読んでいただきありがずうございたした。

タむトルずURLをコピヌしたした