2015-09-21

[PowerShell] イベントの記述方法

これまで様々なフォームの作成方法をご紹介してきました。
しかし、さらに便利なフォームにしてくには、ボタン等へのイベントを組み込むことが必要です。

そこで今回は、イベントの中でも最もオーソドックな「クリックイベント」と「ダブルクリックイベント」の記述方法をご紹介いたします。

フォームの使用感はイベントによって大きく変わってきますので、ぜひ覚えていきましょう!

<今回の完成品>


上記のフォーム上にある「ボタンA」をクリックすると次のメッセージが表示され、


さらにラベル「この文字列をダブルクリック」部分をダブルクリックすると、次のメッセージが表示されます。


それでは、スクリプトを記述します。

---------ここから-------------------------------------------------------------------------------------
# イベントの記述方法

# アセンブリのロード
Add-Type -AssemblyName System.Windows.Forms

# フォーム
$form = New-Object System.Windows.Forms.Form
$form.Size = "250,200"
$form.startposition = "centerscreen"
$form.text = "イベント"
$form.MaximizeBox = $false
$form.MinimizeBox = $false

# ボタンA
$ButtonA = New-Object System.Windows.Forms.Button
$ButtonA.Location = "50,20"
$ButtonA.size = "80,30"
$ButtonA.text  = "ボタンA"
$ButtonA.FlatStyle = "popup"
$form.Controls.Add($ButtonA)

# ボタンAのクリックイベント
$ButtonA.Add_Click({[System.Windows.Forms.MessageBox]::Show("ボタンAが押されました", "結果")})

# ラベル
$Label = New-Object System.Windows.Forms.Label
$Label.Location = "20,80"
$Label.Text = "この文字列をダブルクリック"
$Label.BackColor = "lightgreen"
$Label.AutoSize = $True
$form.Controls.Add($Label)

# ラベルのダブルクリックイベント
$Label.Add_DoubleClick({[System.Windows.Forms.MessageBox]::Show("ダブルクリックされました", "結果")})

# フォームの表示
$form.Showdialog()
---------ここまで-------------------------------------------------------------------------------------

上記内容をコピーし、PowerShell ISEに貼り付けて、実行してみてください。
完成品と同じものが表示されるはずです。

それでは解説をしていきます。
また過去の記事で解説した部分については割愛致します。

内容をご確認いただきたい場合は【ユーザーフォーム - 基礎編 -】をご覧ください。


*****解説*****************************************************************************

# ボタンAのクリックイベント
$ButtonA.Add_Click({[System.Windows.Forms.MessageBox]::Show("ボタンAが押されました", "結果")})


クリックイベントの基本形は次のように記述します。
  対象.Add_Click({ イベント内容 })

今回の例であれば、
  対象      → $ButtonA
  イベント内容 → [System.Windows.Forms.MessageBox]::Show("ボタンAが押されました", "結果")
となります。

今回はイベント内容が少ないのでいいのですが、内容が増えると1行では書ききれない場合があります。
そんな時はイベント内容を変数に格納してしまいましょう。
変数に格納する場合は次のように記述すればOKです。

$Event = {
[System.Windows.Forms.MessageBox]::Show("ボタンAが押されました", "結果")
}
$ButtonA.Add_Click($Event)

# ラベルのダブルクリックイベント
$Label.Add_DoubleClick({[System.Windows.Forms.MessageBox]::Show("ダブルクリックされました", "結果")})


ダブルクリックイベントは「Add_~~」の部分が変わっただけで、その他の記述方法はクリックイベントと同様です。

*******************************************************************************************************

解説は以上となります。

イベントの種類は今回ご紹介したクリックイベント・ダブルクリックイベントの他にもたくさんあります。
例えば、、、
マウスポインタを上に重ねたときに発生 → マウスオーバーイベント
○○の値が変化したときに発生      → バリューチェンジイベント
などなどです。

イベントは各クラスによって使えるもの使えないものがありますので、MSDNを参照ください。
(例えばButtonクラスならココ)

=======================================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=======================================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!           
=======================================================================
スポンサーリンク


0 件のコメント:

コメントを投稿

疑問・質問・リクエスト お気軽にどうぞ (^O^)/