【问题标题】:PowerShell System.Windows.Forms disable a certain items in ListBoxPowerShell System.Windows.Forms 禁用 ListBox 中的某些项目
【发布时间】:2014-01-21 15:34:03
【问题描述】:

有没有办法在 PowerShell 中禁用 System.Windows.Forms.ListBox 中的一些项目?

即列表框包含:

item-a
item-b
item-c
item-d
item-e

我喜欢让item-citem-e 不可选。谢谢!

【问题讨论】:

  • 如果它们不应该是可选的,为什么要首先将它们添加到列表框中?从可用性的角度来看,这似乎是一个令人困惑的设计选择。

标签: powershell listbox listboxitem


【解决方案1】:

简答:ListBox 控件中没有本机禁用/启用项。

我看到了两种方法:

  1. 有一组您不想选择的项目。在处理您的点击事件时,请检查该项目是否是您不想选择的项目,然后什么也不做。
  2. 更简单的方法:创建自定义控件。见:How to Disable Selected Item in List Box

【讨论】:

    【解决方案2】:
    # Events
    $listBox.add_selectedindexchanged({
        foreach ($item in $listbox.SelectedItems) {
            if (***condition for being unselectable***) {
                $listbox.SelectedItems.Remove($item)
                break
            }
        }
    }
    

    每次用户选择一个项目时,此事件都会检查选择项目列表中的“不可选择”项目(您使用条件指定)。如果找到,它们将从列表中删除。当 foreach 循环在已更改的列表上运行时,包含“break”以避免非终止错误。如果一次选择了多个不可选择的项目,此解决方案可能不适用于 Shift-click 多选,但可以修改(可能)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多