ウェブブラウザを操作するために進む・戻る・ホームボタンを作ります。
操作
- <
- 戻る
- △
- ホーム
- >
- 進む
<#
.SYNOPSIS
ボタン操作・進む・戻る・ホーム
.DESCRIPTION
説明
#>
using namespace System.Windows.Forms
param (
[string]$StartUrl = "https://www.google.co.jp/"
)
function Main
{
param (
$url
)
$form = [Form]::new()
# 最初のページに移動
$btnHome = [Button]::new() | % {
$_.Dock = [DockStyle]::Left
$_.Text = "△"
$_.size = "24,24"
$_
}
$btnHome.Add_Click({
$wb.Navigate([Uri]::new($url))
})
# 前のページに移動
$btnBack = [Button]::new() | % {
$_.Dock = [DockStyle]::Left
$_.Text = "<"
$_.size = "24,24"
$_
}
$btnBack.Add_Click({
if ($wb.CanGoBack)
{
$wb.GoBack()
}
})
# 次のページへ移動
$btnForward = [Button]::new() | % {
$_.Dock = [DockStyle]::Left
$_.Text = ">"
$_.size = "24,24"
$_
}
$btnForward.Add_Click({
if ($wb.CanGoForward)
{
$wb.GoForward()
}
})
$panel = [Panel]::new() | % {
$_.Dock = [DockStyle]::top
$_.size = "24,24"
$_
}
$ab = [Textbox]::new() | % {
$_.Dock = [DockStyle]::top
$_.Text = $url
$_.size = "24,24"
$_
}
# フォーカスをロスト
$ab.add_LostFocus({
# テキストボックスの値が変更されている
if ($ab.Modified)
{
# アドレスページへ移動
$wb.Navigate([Uri]::new($ab.Text))
$ab.Modified = $false
}
})
$wb = [WebBrowser]::new() | % {
$_.Dock = [DockStyle]::Fill
$_
}
# ページの読み込み完了
$wb.Add_DocumentCompleted({
# 現在表示中のページとテキストボックスのアドレスを比較
if ($ab.Text -ne $wb.Url)
{
# 異なる場合Urlをセット
$ab.Text = $wb.Url
}
})
$panel.Controls.AddRange(($ab, $btnForward, $btnHome, $btnBack))
$form.Controls.AddRange(($panel, $wb))
$form.Add_Load({
$wb.Navigate([Uri]::new($ab.Text))
})
[Application]::run($form)
}
Main $StartUrl
ボタン配置はとりあえずこんな感じなりました。
ボタンとアドレスバーの配置用にパネルを用意していますが、DockStyleの使い方がこれでよいのか自身がありません。アドレスバー用のテキストボックスの下部がパネルの下地が見えているのが気になりますが、サイズ指定との関係が理解できていないので、そのあたりをいつか学びたいと思います。
ここまでで、ウェブブラウザとして基本的な機能が出来上がりました。
コメント