PowerShell 메모 GUI 입력 화면 표시 (XAML)
9533 단어 GUIXamlPowerShellWPF
개요
GUI의 입력 화면을 표시하는 샘플.
코드
Add-Type -AssemblyName PresentationFramework
[xml]$xaml = @'
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="入力画面">
<StackPanel>
<TextBlock Text="日付を入力↓" />
<StackPanel Orientation="Horizontal">
<DatePicker Name="cal" />
<TextBlock Text="{Binding ElementName=cal, Path=SelectedDate, StringFormat='選択した日付:yyyy/MM/dd', Mode=OneWay}" Margin="20,0,0,0" />
</StackPanel>
<TextBlock Text="テキストを入力↓" Margin="0,10,0,0" />
<TextBox Name="inTxt" Text=""/>
<CheckBox Name="chk" Content="チェック" IsChecked="True" Margin="0,10,0,0" />
<Button Name="okButton" Content="OK" IsDefault="True" Margin="0,10,0,0" />
<TextBlock Name="errTxt" Text="" Foreground="Red" Margin="0,20,0,0" />
</StackPanel>
</Window>
'@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$calendar1 = $window.FindName("cal")
$inputText1 = $window.FindName("inTxt")
$checkbox1 = $window.FindName("chk")
$btn1 = $window.FindName("okButton")
$errorText1 = $window.FindName("errTxt")
# カレンダーの初期設定(過去の日付を選択不可にする)
$calendar_loaded = $calendar1.add_Loaded
$calendar_loaded.Invoke({
$calendar1.BlackoutDates.AddDatesInPast()
})
# 実行ボタン押下時の処理
$btn_clicked = $btn1.add_Click
$btn_clicked.Invoke({
# 入力チェック
if ($calendar1.SelectedDate -eq $null)
{
$errorText1.Text = "日付を入力してください。"
return
}
if ($inputText1.Text -eq "")
{
$errorText1.Text = "テキストを何か入力してください。"
return
}
# 入力値をコンソールに表示
[string]$str1 = $calendar1.SelectedDate.ToString("yyyy/MM/dd")
[string]$str2 = $inputText1.Text
[string]$str3 = $checkbox1.IsChecked.ToString()
Write-Host "日付:${str1}、テキスト:${str2}、チェック:${str3}" -BackgroundColor Blue
# ウィンドウを閉じる
$window.Close()
})
# ウィンドウ表示
$window.ShowDialog() > $null
실행 예
날짜를 선택.
날짜와 텍스트를 입력한 후 OK 버튼을 누릅니다.
대화 상자가 닫히고 콘솔에 메시지가 출력됩니다.
동작 확인한 환경
Add-Type -AssemblyName PresentationFramework
[xml]$xaml = @'
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="入力画面">
<StackPanel>
<TextBlock Text="日付を入力↓" />
<StackPanel Orientation="Horizontal">
<DatePicker Name="cal" />
<TextBlock Text="{Binding ElementName=cal, Path=SelectedDate, StringFormat='選択した日付:yyyy/MM/dd', Mode=OneWay}" Margin="20,0,0,0" />
</StackPanel>
<TextBlock Text="テキストを入力↓" Margin="0,10,0,0" />
<TextBox Name="inTxt" Text=""/>
<CheckBox Name="chk" Content="チェック" IsChecked="True" Margin="0,10,0,0" />
<Button Name="okButton" Content="OK" IsDefault="True" Margin="0,10,0,0" />
<TextBlock Name="errTxt" Text="" Foreground="Red" Margin="0,20,0,0" />
</StackPanel>
</Window>
'@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$calendar1 = $window.FindName("cal")
$inputText1 = $window.FindName("inTxt")
$checkbox1 = $window.FindName("chk")
$btn1 = $window.FindName("okButton")
$errorText1 = $window.FindName("errTxt")
# カレンダーの初期設定(過去の日付を選択不可にする)
$calendar_loaded = $calendar1.add_Loaded
$calendar_loaded.Invoke({
$calendar1.BlackoutDates.AddDatesInPast()
})
# 実行ボタン押下時の処理
$btn_clicked = $btn1.add_Click
$btn_clicked.Invoke({
# 入力チェック
if ($calendar1.SelectedDate -eq $null)
{
$errorText1.Text = "日付を入力してください。"
return
}
if ($inputText1.Text -eq "")
{
$errorText1.Text = "テキストを何か入力してください。"
return
}
# 入力値をコンソールに表示
[string]$str1 = $calendar1.SelectedDate.ToString("yyyy/MM/dd")
[string]$str2 = $inputText1.Text
[string]$str3 = $checkbox1.IsChecked.ToString()
Write-Host "日付:${str1}、テキスト:${str2}、チェック:${str3}" -BackgroundColor Blue
# ウィンドウを閉じる
$window.Close()
})
# ウィンドウ表示
$window.ShowDialog() > $null
실행 예
날짜를 선택.
날짜와 텍스트를 입력한 후 OK 버튼을 누릅니다.
대화 상자가 닫히고 콘솔에 메시지가 출력됩니다.
동작 확인한 환경
Reference
이 문제에 관하여(PowerShell 메모 GUI 입력 화면 표시 (XAML)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kosen-amai/items/27647f0a1ea5b41a9f5c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)