2016-03-07

PowerShellでユーザーフォームを作る - リンクラベル編 -

PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。

今回は「PowerShellでユーザーフォームを作る - リンクラベル編 -」です。

リンクラベルというのは、その文字列をクリックすると指定されたページにジャンプしたりする、よくWEBサイト上で使われているものです。

今回は、そのリンクラベルをフォーム上に設置し、クリックすると指定フォルダを起動するよう設定します。

<今回の完成品>


フォーム内の、色と下線がついている部分がリンクラベルです。

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

# PowerShellでユーザーフォームを作る - リンクラベル編 -

Add-Type -AssemblyName System.Windows.Forms

$form = New-Object System.Windows.Forms.Form
$form.Size = "200,200"
$form.StartPosition = "centerscreen"
$form.Text = "タイトル"

# リンクラベル
$LinkLabel = New-Object System.Windows.Forms.LinkLabel
$LinkLabel.Location = "20,30"
$LinkLabel.Size = "150,30"
$LinkLabel.Text = "ここをクリックしてフォルダを開く"
$form.Controls.Add($LinkLabel)

# リンクラベルのクリックイベント
$JUMP = {
    Invoke-Item -Path "C:\"
}
$LinkLabel.Add_Click($JUMP)

# ボタン
$Button = New-Object System.Windows.Forms.Button
$Button.Location = "50,80"
$Button.Size = "80,30"
$Button.Text  = "閉じる"
$Button.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.Controls.Add($Button)

$form.Showdialog()

上記内容をコピーし、PowerShell ISEに貼り付けて実行すると上の画像と同じものが表示さるはずです。

さらに、「ここをクリックしてフォルダを開く」をクリックすると、Cドライブフォルダが表示されます。

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

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

*****解説***********************************************************************
# リンクラベル
$LinkLabel = New-Object System.Windows.Forms.LinkLabel
$LinkLabel.Location = "20,30"
$LinkLabel.Size = "150,30"
$LinkLabel.Text = "ここをクリックしてフォルダを開く"

ここでは、LinkLabelクラスをインスタンス化し、各種プロパティを設定しています、
Locationプロパティはフォーム内での位置を、Sizeプロパティはリンクラベルの大きさを、Textプロパティは表示する文字列を設定しています。
これ以外にも、有用なプロパティがありますのでご紹介します。

●LinkColorプロパティ
 ・テキストの色を指定する。(デフォルトは青色)
 ・記述例…$LinkLabel.LinkColor = "Red"
 

●LinkBehaviorプロパティ
 ・リンクラベルの動作を次の4つから指定する。(デフォルトはSystemDefault)
  1.AlwaysUnderLine…常に下線が付く
  2.HoverUnderLine…マウスがテキストの上にある時だけ、下線が付く
  3.NeverUnderLine…下線は付かない(色は付く)
  4.SystemDefault…コントロール パネルまたはInternet Explorer の [インターネット オプション] ダイアログ ボックスで設定されているオプションによって異なる

この記述だけでは、まだ肝心のリンクが設定されていませんので、色と下線が付いたラベルと同じ状態です。
リンクを設定するには別途クリックイベントを記述します。
# リンクラベルのクリックイベント
$JUMP = {
    Invoke-Item -Path "C:\"
}
$LinkLabel.Add_Click($JUMP)
ここでは、リンクラベルに対してクリックイベントを設定しています。
イベントの内容は、Invoke-Itemコマンドレットで、指定したパス(今回はCドライブ)のフォルダを起動します。

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

解説は以上となります。

筆者は主に、「テキストにパスをそのまま表示し、クリックするとそのパスのフォルダを起動する」くらいの使い方しかしていませんが、クリックイベント内の記述に指定はありませんので、例えば「Invoke-Item -Path "C:\"」の部分を、メッセージボックスを表示するように変更しても全然構いません。

アイデア次第では、もっと便利な使い方があるかもしれません。
「こんなふうに使うといいよ!」というご意見がありましたら、ぜひコメントをお寄せください。

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


0 件のコメント:

コメントを投稿

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