PowerShellでは、フォームに入力した値をもとに処理をしていくことができます。
簡単なものだと、テキストボックスに文字を入力して、OKボタンを押したら入力した文字を表示する、といったことができます。
今回はサンプルを使って、フォームに使う部品(コンポーネント)を紹介します。
フォームを作る
まず、ボタンやテキストボックスを置くための土台としてフォームが必要です。
1 2 3 4 5 6 7 8 9 10 11 |
#フォームを作成するためのアセンブリ読込(PowerShell ISEでは不要) Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing #フォームの作成 $form = New-Object System.Windows.Forms.Form $form.Text = "フォーム名が入力されます" $form.Size = New-Object System.Drawing.Size(700,300) #フォームを表示 $form.ShowDialog() |
スクリプトをコピペして、実行した画面が↓になります。
スクリプトの解説をします。
1 2 3 |
#フォームを作成するためのアセンブリ読込(PowerShell ISEでは不要) Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing |
Windowsフォームのアセンブリを読み込む必要があります。
おまじないみたいなものと思ってください。
また、PowerShell ISEでは不要です。
1 2 3 4 |
#フォームの作成 $form = New-Object System.Windows.Forms.Form $form.Text = "フォーム名が入力されます" $form.Size = New-Object System.Drawing.Size(700,300) |
$form = New-Object System.Windows.Forms.Formで、フォームを生成し、$form.Textで、下の赤枠で囲んでいる部分の文の内容を決めます。
$form.Sizeで、表示したフォームの大きさを指定します。
サイズ指定のカッコの中は、(横の長さ,縦の長さ)となっています。(700,300)だと横長になります。
1 2 |
#フォームを表示 $form.ShowDialog() |
最後に生成したフォームを表示します。ShowDialog()の()内は空欄のままで問題ありません。
PowerShellでWindowsフォームを使う場合、必ず上記のスクリプトを書くことになりますので忘れずに記載しましょう。
ラベル・テキストボックス・ボタンを配置する
フォームを作成した後は、必要な部品を置いていきましょう。
サンプルでは、好きな食べ物を入力してボタンをクリックすると、メッセージボックス形式で、
「好きな食べ物は、(入力した食べ物)です。」と表示するスクリプトです↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#フォームを作成するためのアセンブリ読込(PowerShell ISEでは不要) Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing #フォームの作成 $form = New-Object System.Windows.Forms.Form $form.Text = "フォーム名が入力されます" $form.Size = New-Object System.Drawing.Size(700,300) #ラベルの作成 $Label = New-Object System.Windows.Forms.Label $Label.Location = New-Object System.Drawing.Point(250,50) #ラベルの文字列設定 $Label.Text = "好きな食べ物を入力してください" $Label.AutoSize = $True #ラベルをフォームに紐づける。 $form.Controls.Add($Label) #テキストボックスの作成 $TextBox = New-Object System.Windows.Forms.Textbox $TextBox.Location = New-Object System.Drawing.Point(100,100) #テキストボックスの横幅を設定 $TextBox.Size.Width = 500 #テキストボックスをフォームに紐づける。 $Form.Controls.Add($TextBox) #ボタンの作成 $Button = New-Object System.Windows.Forms.Button $Button.Location = New-Object System.Drawing.Point(200,200) $Button.Size = New-Object System.Drawing.Size(300,30) #ボタンの面にOKを表示する。 $Button.Text = 'OK' #ボタンをクリックしたときに、テキストボックスに入力した内容をメッセージボックスで表示する。 $Button.Add_Click({[System.Windows.Forms.MessageBox]::Show("私の好きな食べ物は、" + $TextBox.Text + "です。")}) #エンターキーを押すと、ボタンをクリックしたことになる。 $form.AcceptButton = $Button #ボタンをフォームに紐づける。 $form.Controls.Add($Button) #フォームを表示 $form.ShowDialog() |
サンプルを実行したのが↓
さらにテキストボックスに、「ハンバーグ」と入力してボタンを押したものが↓
サンプルでは最低限の部品の設定(サンプルでいうとLocation、Sizeなど)をしています。
部品の設定項目は他にも多くありますが、基本的にはこれで十分かと思います。
少し気になったのは、テキストボックスの縦幅は変えられないようですね…
テキストボックスの縦幅を設定するHeightプロパティがありましたが、変更しても縦幅を変えられませんでした。テキストボックスを利用する場合はご注意ください。