当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 从列表框中选择项目

作者:精品下载站 日期:2024-12-14 03:01:35 浏览:14 分类:玩电脑

从列表框中选择项目


该示例仅适用于Windows平台。

使用 Windows PowerShell 3.0 及更高版本创建一个对话框,允许用户从列表框控件中选择项目。

创建一个列表框控件,并从中选择项目

将以下内容复制并粘贴到 Windows PowerShell ISE 中,然后将其另存为 PowerShell 脚本 (.ps1) 文件。

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please select a computer:'
$form.Controls.Add($label)

$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)
$listBox.Height = 80

[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')

$form.Controls.Add($listBox)

$form.Topmost = $true

$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $listBox.SelectedItem
    $x
}

该脚本首先加载两个 .NET Framework 类:System.DrawingSystem.Windows.Forms。然后启动 .NET Framework 类 System.Windows.Forms.Form 的新实例。这提供了一个空白窗体或窗口,您可以开始向其中添加控件。

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

创建 Form 类的实例后,为该类的三个属性赋值。

  • 文本。这将成为窗口的标题。
  • 大小。这是表单的大小(以像素为单位)。前面的脚本创建了一个宽 300 像素、高 200 像素的表单。
  • StartingPosition。 在前面的脚本中,此可选属性设置为 CenterScreen。如果不添加此属性,Windows 将在打开窗体时选择一个位置。通过将 StartingPosition 设置为 CenterScreen,每次加载表单时,您都会自动在屏幕中间显示表单。
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

接下来,为您的表单创建一个确定按钮。指定确定按钮的大小和行为。在此示例中,按钮位置距离表单顶部边缘 120 像素,距离左边缘 75 像素。按钮高度为 23 像素,按钮长度为 75 像素。该脚本使用预定义的 Windows 窗体类型来确定按钮行为。

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

同样,您创建一个取消按钮。 取消按钮距顶部 120 像素,距窗口左边缘 150 像素。

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

接下来,在窗口上提供标签文本,描述您希望用户提供的信息。在本例中,您希望用户选择一台计算机。

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please select a computer:'
$form.Controls.Add($label)

添加控件(在本例中为列表框),让用户提供您在标签文本中描述的信息。除了列表框之外,您还可以应用许多其他控件;有关更多控件,请参阅 System.Windows.Forms 命名空间。

$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,20)
$listBox.Height = 80

在下一部分中,您将指定希望列表框向用户显示的值。

笔记

此脚本创建的列表框仅允许一项选择。要创建允许多项选择的列表框控件,请为 SelectionMode 属性指定一个值,类似于以下内容:$listBox.SelectionMode='MultiExtended'。有关详细信息,请参阅多选列表框。

[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')

将列表框控件添加到窗体中,并指示 Windows 在打开窗体时在其他窗口和对话框之上打开该窗体。

$form.Controls.Add($listBox)
$form.Topmost = $true

添加以下代码行以在 Windows 中显示表单。

$result = $form.ShowDialog()

最后,If 块中的代码指示 Windows 在用户从列表框中选择一个选项,然后单击 OK 按钮或按 输入键。

if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
    $x = $listBox.SelectedItem
    $x
}

参见

  • GitHub:Dave Wyatt 的 WinFormsExampleUpdates
  • Windows PowerShell 本周提示:从列表框中选择项目

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯