前提・実現したいこと
powershellでファイル名を取得し、結果を表示するルーチンを作成しています。
OpenFileDialog を使用してファイルを取得していますが、取得後、メッセージボックスにその内容を表示し、確認を促しています。
発生している問題・エラーメッセージ
このメッセージボックスを最前面に表示し、OKボタンにフォーカスを当てたいのですが、できません。
(キーボードのEnterキーを押すだけで次に進みたいのです。)
該当のソースコード
powershell
1function MessageBox([string]$title,[string]$labelText){ 2 3# フォーム全体の設定 4 $form = New-Object System.Windows.Forms.Form 5 $form.Size = New-Object System.Drawing.Size(400,300) 6 $form.Text = $title 7 $form.font = New-Object System.Drawing.Font("メイリオ",8) 8 9# ラベルを表示 10 $label = New-Object System.Windows.Forms.Label 11 $label.Location = New-Object System.Drawing.Point(10,10) 12 $label.Size = New-Object System.Drawing.Size(380,160) 13 $label.Text = $labelText 14 $form.Controls.Add($label) 15 16# OKボタンの設定 17 $OKButton = New-Object System.Windows.Forms.Button 18 $OKButton.Location = New-Object System.Drawing.Point(150,170) 19 $OKButton.Size = New-Object System.Drawing.Size(75,40) 20 $OKButton.Text = "OK" 21 $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK 22 $form.AcceptButton = $OKButton 23 $form.Controls.Add($OKButton) 24 25# フォームを表示 26 $form.Add_Shown($OKButton.Select()) 27 $form.Topmost = $True 28 $form.ShowDialog() 29 return 30} 31 32function FileOpenDialog([string]$title,[string]$filter){ 33 $dialog = New-Object System.Windows.Forms.OpenFileDialog 34 $dialog.Title = $title 35 $dialog.Filter = $filter 36 if ($dialog.Showdialog() -eq "OK") { 37 return $dialog.FileName 38 }else{ 39 return $null 40 } 41} 42 43Add-Type -Assembly System.Windows.Forms 44$fileName = FileOpenDialog "test" 45$a = MessageBox "test" $fileName 46
試したこと
.NET Frameworkライブラリの[System.Windows.Forms.MessageBox]::Show()も試しましたが、ダメでした。
補足情報(FW/ツールのバージョンなど)
PSVersion 5.1.18362.752
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.18362.752
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 03:39
2020/06/08 12:58