2016-12-22 3 views
0

私は読み込み専用に設定されたウィンドウフォームを持っていますが、CTRL + Fは機能しないことに気付きました。検索機能やバーを作成して、特定のテキストや文字列をWindowsフォームで表示する方法はありますか?私のコードは以下のようになります:Windowsフォームの検索オプションをpowershellから作成する

   # Create Window 
add-type -assembly System.Windows.Forms 
$form=New-Object System.Windows.Forms.Form 
$form.StartPosition='CenterScreen' 
       # Textbox 
$textBox = New-Object System.Windows.Forms.TextBox 
$textBox.Dock = [System.Windows.Forms.DockStyle]::Fill 
$textBox.ReadOnly =$true 
$textBox.Multiline = $true 
$textBox.ScrollBars = "Vertical" 
$textBox.Font = New-Object System.Drawing.Font("Arial",12) 
$textBox.ForeColor = "White" 
$textBox.Text = $object 
$textBox.BackColor = "Black" 
$Form.Controls.Add($textBox) 
       # Button 
$btn=New-Object System.Windows.Forms.Button 
$btn.Text='Finish' 
$btn.DialogResult='Ok' 
$btn.Dock='bottom' 
$form.Controls.Add($btn) 
if($form.ShowDialog() -eq 'Ok'){ 
    $tb.lines 
} 

これをKeyDownイベントとして扱うことは可能ですか?もしそうなら、CTRL + Fをどのように記録してウィンドウ内のテキストを検索するのですか?

+0

あなたは.Visible = $は 'false'に設定しています別のテキストボックスを追加し、' $のtextbox'のためのKeyDownイベントを扱うことができる - のCtrl + Fが押された場合には、第二テキストボックスを表示し、検索のためにそれを使用します入力 –

+0

こんにちは@ MathiasR.Jessen私はWeb上でこのメソッドを利用する方法を調べようとしました。あなたが話していることが分かります。これをコード化する方法について偶然案内してもらえますか?私はあなたのために私の質問を編集しました。 –

答えて

2
# Create Window 
Add-Type -AssemblyName System.Windows.Forms 
Add-Type -AssemblyName Microsoft.VisualBasic 
$form = New-Object System.Windows.Forms.Form 
$form.StartPosition = 'CenterScreen' 
$form.KeyPreview = $true 
$form.Add_KeyDown({ 
    if ($_.Control -and $_.KeyCode -eq "F") { 
     $stringToFind = [Microsoft.VisualBasic.Interaction]::InputBox("Find what", "Find") 
     $pos = $textBox.Text.IndexOf($stringToFind); 
     if ($pos -ne -1) { 
      $textBox.SelectionStart = $pos; 
      $textBox.SelectionLength = $stringToFind.Length; 
     } 
    } 
}) 
# Textbox 
$textBox = New-Object System.Windows.Forms.TextBox 
$textBox.Dock = [System.Windows.Forms.DockStyle]::Fill 
$textBox.ReadOnly =$true 
$textBox.Multiline = $true 
$textBox.ScrollBars = "Vertical" 
$textBox.Font = New-Object System.Drawing.Font("Arial",12) 
$textBox.ForeColor = "White" 
$textBox.Text = $object 
$textBox.BackColor = "Black" 
$Form.Controls.Add($textBox) 
# Button 
$btn = New-Object System.Windows.Forms.Button 
$btn.Text = 'Finish' 
$btn.DialogResult = 'Ok' 
$btn.Dock = 'bottom' 
$form.Controls.Add($btn) 
if ($form.ShowDialog() -eq 'Ok') { 
    $tb.lines 
} 
関連する問題