如何在文本字段中使用Keydown函数?

时间:2018-01-29 13:16:22

标签: powershell user-interface

我有一个向我显示所有ADUser的文本框。我希望能够在文本字段中搜索这些用户。因此,当我输入文本字段并按下例如" tab"出现正确的用户帐户。我有一个工作的Keydown功能,但它离我想要的很远。有人可以帮我解决这个问题吗?

这是我的Powershell Script ::

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 

#GUI Interface
$Form = New-Object System.Windows.Forms.Form
$Form.Size = New-Object System.Drawing.Size(500,400)
$Form.Text = "Benutzer Löschen"

#-----Labels-----
#Label Benutzer Löschen
$Label = New-Object System.Windows.Forms.Label
$Label.Location = New-Object System.Drawing.Size(200,10) 
$Label.Size = New-Object System.Drawing.Size(200,20) 
$Label.Text = "Benutzer Löschen"
$Label.Name = "Benutzer Löschen"
$Form.Controls.Add($Label)

#--------Buttons-------
#Button Cancel
$BTcancel = New-Object System.Windows.Forms.Button
$BTcancel.Location = New-Object System.Drawing.Size(400,200)
$BTcancel.Size = New-Object System.Drawing.Size(75,23)
$BTcancel.Text = "Cancel"
$BTcancel.Name = "Cancel"
$BTcancel.Add_Click({$Form.Close()})
$Form.Controls.Add($BTcancel)

#Button Löschen
$BTlöschen = New-Object System.Windows.Forms.Button
$BTlöschen.Location = New-Object System.Drawing.Size(320,200)
$BTlöschen.Size = New-Object System.Drawing.Size(75,23)
$BTlöschen.Text = "Löschen"
$BTlöschen.Name = "Löschen"
$Form.Controls.Add($BTlöschen)

#-----ListBox-----
#User Anzeige
$Useranzeige = New-Object System.Windows.Forms.ListBox
$Useranzeige.Location = New-Object System.Drawing.Size(90,50)
$Useranzeige.Size = New-Object System.Drawing.Size(300,100)
$Form.Controls.Add($Useranzeige)

#-----Textbox-----
#Suchfeld
$Suchfeld = New-Object System.Windows.Forms.TextBox 
$Suchfeld.Location = New-Object System.Drawing.Size(90,160) 
$Suchfeld.Size = New-Object System.Drawing.Size(300,20) 
$Form.Controls.Add($Suchfeld)

#---Funktionen---
#Useranzeige
Import-Module ActiveDirectory
        $name = Get-ADUser -Filter {name -like '*'}
           foreach ($i in $name) 
           {$Useranzeige.Items.Add($i.Name + "`t")}

#BTlöschen
$BTlöschen.Add_Click({
Remove-ADUser -Identity $Suchfeld.Text
})

#Clear Inhalt vom Suchfeld
$BTlöschen.Add_Click{$Suchfeld.Clear()}

#Search Funkion
$Suchfeld.Add_KeyDown({
if ($_.Control -and $_.KeyCode -eq "F") {
        $stringToFind = [Microsoft.VisualBasic.Interaction]::InputBox("Find what", "Find")
        $pos = $Useranzeige.Text.IndexOf($stringToFind);
        if ($pos -ne -1) { 
            $Useranzeige.SelectionStart = $pos;
            $Useranzeige.SelectionLength = $stringToFind.Length;
        }
    } 
}) 
[void] $Form.ShowDialog()

1 个答案:

答案 0 :(得分:1)

您的主要问题似乎是您尝试搜索Text的{​​{1}}属性 - 这将是空的。

浏览项目列表,找到匹配的名称:

ListBox