将 PSObject 添加到列表框,但仅显示其中一个属性
Adding a PSObject to Listbox, but displaying only one of the properties
我想将一个 PSObject 添加到列表框,其中包含几个属性,确切地说是三个,但只显示其中一个属性。当我将整个 PSobject 添加到列表框时,它会显示如下所有属性:
@{Property1="Something", Property2="Something Else", Property3="Something"}
假设 属性1 是我希望用户看到的 属性,那么列表框中的相同对象行应该如下所示:
Something
解决此问题的一种方法是将 PSObject 的特定 属性 添加到列表框中,但我希望每一行代表一个唯一的对象。因此,即使某些 PSObject 彼此共享 属性1 的值,我仍然能够准确判断列表框中选择了哪个 PSObject。如果我只在列表框中添加一个 属性,我将无法知道这一点。
例如,可能有两个对象的 属性1 的值为 "Something",但其中一个的 属性2 设置为 "Something Else",另一个是否设置为 "A Third Something"。列表框应完全相同地显示两个对象,即:
Something
Something
但列表框应该知道所选项目是否 属性2 设置为 "Something else" 或 "A Third Something",即使用户无法分辨。
尝试将 ToString() 脚本方法添加到输出有问题的 属性 的 PSObject。
$p=[pscustomobject]@{a=1;b='hello'}
$p | add-member -membertype ScriptMethod -name ToString -value {$this.b} -force
添加项目后,列表框将使用其 ToString() 方法来选择要显示的内容。
我想将一个 PSObject 添加到列表框,其中包含几个属性,确切地说是三个,但只显示其中一个属性。当我将整个 PSobject 添加到列表框时,它会显示如下所有属性:
@{Property1="Something", Property2="Something Else", Property3="Something"}
假设 属性1 是我希望用户看到的 属性,那么列表框中的相同对象行应该如下所示:
Something
解决此问题的一种方法是将 PSObject 的特定 属性 添加到列表框中,但我希望每一行代表一个唯一的对象。因此,即使某些 PSObject 彼此共享 属性1 的值,我仍然能够准确判断列表框中选择了哪个 PSObject。如果我只在列表框中添加一个 属性,我将无法知道这一点。
例如,可能有两个对象的 属性1 的值为 "Something",但其中一个的 属性2 设置为 "Something Else",另一个是否设置为 "A Third Something"。列表框应完全相同地显示两个对象,即:
Something
Something
但列表框应该知道所选项目是否 属性2 设置为 "Something else" 或 "A Third Something",即使用户无法分辨。
尝试将 ToString() 脚本方法添加到输出有问题的 属性 的 PSObject。
$p=[pscustomobject]@{a=1;b='hello'}
$p | add-member -membertype ScriptMethod -name ToString -value {$this.b} -force
添加项目后,列表框将使用其 ToString() 方法来选择要显示的内容。