2012-07-16 135 views
1

我在查找如何自動將鍵盤焦點設置爲PowerShell中的文本框。如何將鍵盤焦點設置爲Powershell中的文本框

我有一個腳本,要求用戶從下拉菜單中選擇一個選項,然後基於該選擇,他們必須輸入某些參數。這一切都很好。

爲了便於使用,我希望鍵盤的焦點在每次顯示新鍵盤時切換到輸入框,因此用戶不必一直點擊它來輸入文本。

我迄今爲止代碼:

function inputBox($parameter) 
{ 
$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = $parameter 
$objForm.Size = New-Object System.Drawing.Size(300,200) 
$objForm.StartPosition = "CenterScreen" 

$objForm.KeyPreview = $True 
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") 
    {$paramValue=$objTextBox.Text;$objForm.Close()}}) 
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") 
    {$objForm.Close()}}) 



$OKButton = New-Object System.Windows.Forms.Button 
$OKButton.Location = New-Object System.Drawing.Size(75,90) 
$OKButton.Size = New-Object System.Drawing.Size(75,25) 
$OKButton.Text = "OK" 
$OKButton.Add_Click({$paramValue=$objTextBox.Text;$objForm.Close()}) 
$objForm.Controls.Add($OKButton) 

$objLabel = New-Object System.Windows.Forms.Label 
$objLabel.Location = New-Object System.Drawing.Size(10,20) 
$objLabel.Size = New-Object System.Drawing.Size(280,20) 
$objLabel.Text = $parameter 
$objForm.Controls.Add($objLabel) 

$objTextBox = New-Object System.Windows.Forms.TextBox 
$objTextBox.Location = New-Object System.Drawing.Size(10,40) 
$objTextBox.Size = New-Object System.Drawing.Size(260,20) 
$objForm.KeyPreview = $True 
$objForm.Controls.Add($objTextBox) 

$objForm.Topmost = $True 

$objForm.Add_Shown({$objForm.Activate()}) 
[void] $objForm.ShowDialog() 

return $paramValue 

任何想法?

謝謝!

回答

4

按照你的代碼,在那裏我能找到一個下拉菜單,給予重點的文本框時,會顯示形式我做:

$objForm.Add_Shown({$objForm.Activate(); $objTextBox.focus()}) 
+1

完美工作,謝謝! – YYZ 2012-07-16 09:48:06

+0

也適合我。 :-) – 2016-12-03 06:31:59

0

嘗試的情況下,選擇方法榕不起作用:

if($textbox.CanFocus) 
{ 
    $textbox.Focus() 
else 
{ 
    $textbox.Select() 
} 
-1

與原來的職位和工作FOCUS的代碼是:

if ($objTextBox.CanFocus) 
{ 
$objTextBox.Focus() 
} 
else 
{ 
$objTextBox.Select() 
} 
相關問題