Wednesday, June 25, 2008

Windows Formアプリケーションを作成する その1(PowerShell Tips)
Windows Formアプリケーションを作成する その2(PowerShell Tips)
Windows Formアプリケーションを作成する その3(PowerShell Tips)

の続きです。

今回は、[閉じる]ボタンを追加することで、前回同様コントロールの追加方法、そしてイベントの作成方法についてみていきたいと思います。

1.パネルを追加する

 今回追加する[閉じる]ボタンはパネルに追加したいと思います。

 ということで、まずは下記のようにしてフォームにパネルを追加します。

#===== Panelの作成 =====
$panel1 = New-Object System.Windows.Forms.Panel
$form.Controls.Add($panel1)
$panel1.Dock = [System.Windows.Forms.DockStyle]::Bottom
$panel1.Height = 30

 まずは、New-Objectコマンドレットを使用して、パネルのインスタンスを作成します。

 そしてフォーム($form)のControls.Addメソッドを使用して、パネルを追加します。

 パネルはフォームの最下部に設置したいので、Bottomを指定し、高さを30としています。

2.ボタンを追加する

 ボタンもNew-Objectコマンドレットを使用して、インスタンスを作成します。

 また、Locationプロパティを使用して、ボタンの配置位置を指定します。ボタンはパネルに追加するので基点はパネルの左上となります。

#===== [閉じる]ボタンの作成 =====
$btnClose = New-Object System.Windows.Forms.Button
$btnClose.Location = New-Object System.Drawing.Point(405, 4)

3.ボタンテキストの設定

 [閉じる]ボタンなので、Textプロパティに「閉じる」を指定します。

$btnClose.Text = "閉じる"

4.Anchorの設定

 Anchorはそのコントロールの親(ここではPanel)が伸縮したときに、配置位置をどのようにするかを指定するものです。

 今回は、パネルの右上からの位置をキープし続けるようにしたいためTopとRightを指定しています。 この組み合わせは-bor演算子を使用して設定します。

5.イベントの追加

 イベントを追加するには、そのオブジェクトの 変数.Add_イベント名 のように記述します。 今回はクリック時にフォームを閉じたいので

$btnClose.Add_Click({$form.Close()})

 とします。

6.パネルへボタンを追加する

 パネルへボタンを追加するには、Controls.Addを使用します。

$panel1.Controls.AddRange($btnClose)

7.フォームを表示する

フォームを表示するにはShowDialogメソッドを使用します。Showメソッドを使用すると一瞬でフォームが閉じてしまうので、PowerShellで使用するときはShowDialogメソッドを使用するようにしてください。

#===== Formを表示 =====
$form.ShowDialog()
Wednesday, June 25, 2008 10:22:55 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [2]  |  Trackback
Thursday, June 26, 2008 12:02:53 AM (Tokyo Standard Time, UTC+09:00)
お、更新再開ですね

最近気づいたのですが、Point 型って文字列で指定可能なんですよ。知ってました?
たとえば
$btnClose.Location = New-Object System.Drawing.Point(405, 4)
なら、
$btnClose.Location = '405, 4'
って書けます

Point に限らず、TypeConverterAttribute でコンバータが用意されている型には有効っぽいです。
Thursday, June 26, 2008 8:08:16 AM (Tokyo Standard Time, UTC+09:00)
おーっ、それは知らなかったです。

>Point に限らず、TypeConverterAttribute でコンバータが用意されている型には有効っぽいです。

これは、いいこと教えていただきました。
PowerShellは奥が深いですね。

ありがとうございます。
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: