PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。
以前の投稿で、インプットボックスやメッセージボックスをご紹介しましたが、それは非常にシンプルなものであり、使い勝手が良い反面、自由度が低いものでした。
過去の投稿はこちら↓↓
【PowerShellでInputBoxを使用する】
【PowerShellでMessageBoxを使用する】
ユーザーフォーム 4回目は「
PowerShellでユーザーフォームを作る - チェックボックス編 -」です。
ユーザーフォーム 1回目 【
PowerShellでユーザーフォームを作る - 基礎編 -】
ユーザーフォーム 2回目 【
PowerShellでユーザーフォームを作る - オプション紹介 -】
ユーザーフォーム 3回目 【
PoweShellでユーザーフォームを作る - リストボックス編 -】
前回はリストボックスを作成しましたが、今回はチェックボックス(CheckBox)を作成していきます。
<今回の完成品>
リストボックスと似ていますが、各項目の左側に □ が付いているのがおわかりかと思います。
リストボックスはリスト内から1つだけ選択させるものであるのに対し、チェックボックスは1つもしくは複数項目を選択させます。
それでは例文を記述します。
---------ここから-------------------------------------------------------------------------------------
# ユーザーフォームを作る - チェックボックス編 -
# アセンブリのロード
Add-Type -AssemblyName System.Windows.Forms
# フォームの作成
$form = New-Object System.Windows.Forms.Form
$form.Size = "250,280"
$form.Startposition = "CenterScreen"
$form.Text = "選択"
# ラベルを作成
$label = New-Object System.Windows.Forms.Label
$label.Location = "10,20"
$label.Size = "250,20"
$label.Text = "好きな果物を選択してください"
# チェックボックスを作成
$CheckedBox = New-Object System.Windows.Forms.CheckedListBox
$CheckedBox.Location = "5,40"
$CheckedBox.Size = "220,150"
# 配列を作成
$RETU = ("りんご","みかん","メロン","レモン","バナナ","すいか","いちご","パパイヤ","キュウイ","オレンジ","ぶどう")
# チェックボックスに10項目を追加
$CheckedBox.Items.AddRange(
$RETU)
# すべての既存の選択をクリア
$CheckedBox.ClearSelected()
# OKボタンの設定
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = "40,200"
$OKButton.Size = "75,30"
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
# キャンセルボタンの設定
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = "130,200"
$CancelButton.Size = "75,30"
$CancelButton.Text = "Cancel"
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
# フォームにアイテムを追加
$form.Controls.Add(
$label)
$form.Controls.Add(
$OKButton)
$form.Controls.Add(
$CancelButton)
$form.Controls.Add(
$CheckedBox)
# キーとボタンの関係
$form.AcceptButton =
$OKButton
$form.CancelButton =
$CancelButton
# 最前面に表示:する
$form.Topmost = $True
# フォームを表示
$result =
$Form.ShowDialog()
# 処理分岐
if (
$result -eq "OK" )
{
$AAA = @(
$CheckedBox.CheckedItems)
}else{
exit
}
---------ここまで-------------------------------------------------------------------------------------
上記内容をコピーし、
PowerShell ISEに貼り付けて、実行してみてください。
完成品と同じものが表示されましたか??
それではチェックボックスに関連する部分の解説をしていきます。
※フォームやボタン等については省略させていただきます。
ご不明な方は、過去記事を参照ください。
→【
PowerShellでユーザーフォームを作る - 基礎編 -】
**********************************解説*******************************************
# チェックボックスを作成
$CheckedBox = New-Object System.Windows.Forms.CheckedListBox
$CheckedBox.Location = "5,40"
$CheckedBox.Size = "220,150"
ここでは、CheckedListBoxクラスをインスタンス化し、使用準備を行っています。
同時にLocationプロパティで表示する位置を、Sizeプロパティで大きさを指定しています。
# 配列を作成
$RETU = ("りんご","みかん","メロン","レモン","バナナ","すいか","いちご","パパイヤ","キュウイ","オレンジ","ぶどう")
・チェックボックス内に表示させる項目を作成しています。
# チェックボックスに10項目を追加
$CheckedBox.Items.AddRange($RETU)
・作成した項目をチェックボックス内に追加しています。
今回は配列に項目を格納した上で、まとめて追加しましたが、当然、ひとつずつ追加することも可能です。
その場合は次のように記述します。
$CheckedBox.Items.AddRange("りんご")
$CheckedBox.Items.AddRange("いちご")
$CheckedBox.Items.AddRange("みかん")
~~以下省略~~
# 処理分岐
if ( $result -eq "OK" )
{
$AAA = @($CheckedBox.CheckedItems)
}else{
exit
}
・チェックボックスの利点は複数項目を取得できることです。
この部分では、チェックボックス内でチェックが入った全てのアイテムを変数AAAに格納しています。
***********************************************************************************
解説は以上となります。
今回の内容は前回のリストボックスとそこまで大きな違いはなかったと思います。
さて、次回は「
PowerShellでユーザーフォームを作る - ラジオボタン編 -」を投稿したいと思います。
=======================================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:
tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=======================================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!
=======================================================================