如何在powershell

时间:2015-12-11 20:36:23

标签: wpf powershell checkbox

我在Powershell中使用Visual Studio制作的WPF应用程序。我试图找出如何收集激活的复选框并根据选择运行命令。目前,我正在尝试显示一条消息,该消息将向用户显示他们的选择,以便在继续下一步之前进行确认。出于某种奇怪的原因,

if ($checkbox.checked -eq $true)不起作用。

我想重新创建的是,如果我有一个包含以下复选框的列表框(在表单启动时都未选中):

Apples Oranges Bananas

并且用户选择Apples& Bananas,我想要一个消息框,显示用户已选择Apples & Bananas

[System.Windows.Forms.MessageBox]::Show(" show what the user has selected in this line" , "selection")})

并运行可编程到这些选择的命令。

对于更合适的上下文,我正在创建一个GUI来将用户添加到某些组(复选框允许一次添加到多个组)。在继续添加到相应的组之前,我想让用户确切地知道他们选择了哪些用户组。

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

您想要的属性是isChecked,而不是checked。简单的例子:

[xml]$xaml = @"
<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="Window" Title="Initial Window" WindowStartupLocation = "CenterScreen"
    SizeToContent = "WidthAndHeight" ShowInTaskbar = "True" Background = "lightgray"> 
    <StackPanel > 
        <CheckBox x:Name="CheckBox1" Content = 'Value for checkbox one'/>
        <TextBox />      
    </StackPanel>
</Window>
"@

$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )

$CheckBox1 = $Window.FindName("CheckBox1")

$CheckBox1.Add_Click({
    if($CheckBox1.isChecked) {
        $CheckBox1.Content | Out-Host
    }
})

$Window.Showdialog() | Out-Null

答案 1 :(得分:0)

@sodawillow发布的解决方案有效。如果您需要输出用户的选择以进行确认,那么下面的代码就可以做到这一点。

for ($i=#; $i -le #; $i++){ if ($listbox.items.item($i).isChecked -eq $true)

{$string = $listbox.items.item($i).content $collectionstring = @("$collectionstring" + "$string")}} [System.Windows.Forms.MessageBox]::Show("$collectionstring" , "Status")