Visual Studio, как получить файлы для отображения в Listbox Powershell - PullRequest
2 голосов
/ 25 марта 2020

Я создал PowerShell GUI, который объединяет 2 документа в формате PDF, затем преобразует их в .tif, затем переименовывает и, наконец, перемещает в окончательное местоположение.

Я хотел бы использовать ListBox, чтобы показать действия вышеупомянутых сценариев, если это возможно

Так что в первом ListBox он должен показать 2 файла PDF, которые будут объединены.

Я не могу получить это показать любой файл!

$listBox1_SelectedIndexChanged = {
    $listBox1.Text = Get-ChildItem "E:\SIGNEDNOTES" -Filter *.pdf
}
$listBox1_SelectedIndexChanged = {

    $rootFolder = "E:\SIGNEDNOTES\" 
    $subfolders = (Get-ChildItem -Path $rootFolder -Filter *.pdf -Recurse -Directory).FullName
    $listBox1 = New-Object System.Windows.Forms.ListBox
    $listBox1.Items.AddRange($subfolders)

}

enter image description here enter image description here

1 Ответ

2 голосов
/ 25 марта 2020

Чтобы добавить новые элементы в ListBox, необходимо заполнить коллекцию ListBox.Items. Вот краткий пример.

Учитывая этот XAML

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="138" Margin="84,103,0,0" VerticalAlignment="Top" Width="332"/>

    </Grid>
</Window>

Я предполагаю, что у вас уже есть метод использования макета XAML в PowerShell, но если вы этого не сделаете, вы Можно использовать метод, который я описал в этом сообщении в блоге: Использование GUI элементов в PowerShell .

Мой listBox называется $WPFlistBox, так что вот как я это заполнил бы.

$items = get-childItem c:\temp\*.exe 
ForEach($item in $items){
   $WPFlistBox.Items.Add($item.FullName)
}   

Просто измените переменные, чтобы они соответствовали вашим собственным, и вы должны быть в курсе.

Вот пример того, как это выглядит. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...