Arrays 创建新变量并将其添加到CheckedListBox
我想自动化下面的代码并使其动态化,因此当我单击按钮添加时,它应该创建一个Arrays 创建新变量并将其添加到CheckedListBox,arrays,winforms,powershell,Arrays,Winforms,Powershell,我想自动化下面的代码并使其动态化,因此当我单击按钮添加时,它应该创建一个$template(x),并且应该将其添加到$TemplateArray中 ($menulist是一个选中列表框,它显示文件名) 但是 现在,我有$template1,$template2,如果我想要另一个,我必须手动在代码中键入它,但我希望通过添加按钮来完成 $template1 = Split-Path C:\Users\$Env:USERNAME\Documents\test.txt -Leaf -Resolve $t
$template(x)
,并且应该将其添加到$TemplateArray
中
($menulist
是一个选中列表框
,它显示文件名)
但是
现在,我有$template1
,$template2
,如果我想要另一个,我必须手动在代码中键入它,但我希望通过添加按钮来完成
$template1 = Split-Path C:\Users\$Env:USERNAME\Documents\test.txt -Leaf -Resolve
$template2 = Split-Path C:\Users\$Env:USERNAME\Documents\test2.txt -Leaf -Resolve
$TemplateArray = $template1,$template2;
$menulist.Items.AddRange($TemplateArray)
$button_add_OnClick = {
#TODO: Place custom script here
}
另外,当我单击“添加”按钮后,是否可能会询问我文件位置,并将其格式化为类似的格式,因为我只想在选中列表框中显示文件名,但我也希望能够使用另一个按钮打开文件(但“打开”按钮不是此问题的一部分)
要求用户从表单中选择文件非常简单-只需使用类:
您提到以后需要文件的完整路径,但您只对向用户显示文件名感兴趣
您可以通过向列表中添加适当的对象(与文件的Get-Item和Get-ChildItem返回的类型相同),而不仅仅是字符串来实现这一点:
$template1 = Get-Item C:\Users\$Env:USERNAME\Documents\test.txt
$template2 = Get-Item C:\Users\$Env:USERNAME\Documents\test2.txt
$TemplateArray = $template1,$template2
$AddButton.add_Click({
# ...
# Same as before
# ...
if($OpenFileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK)
{
$TargetFile = Get-Item $OpenFileDialog.FileName
# Add the selected file to the CheckedListBox Items
$menulist.Items.Add($TargetFile)
# Add to the Templates array as well
$TemplateArray += $TargetFile
}
})
然后最后设置CheckedListBox的,以确保它显示文件名:
$menulist.DisplayMember = "Name"
因此,在GUI中,看起来您只有一个字符串列表,但当您检索SelectedItems
时,它是一个成熟的FileInfo
对象:
PS> $menulist.SelectedItems[0].FullName
C:\Users\CodeBusta\Documents\test.txt
要求用户从表单中选择文件非常简单-只需使用类:
您提到以后需要文件的完整路径,但您只对向用户显示文件名感兴趣
您可以通过向列表中添加适当的对象(与文件的Get-Item和Get-ChildItem返回的类型相同),而不仅仅是字符串来实现这一点:
$template1 = Get-Item C:\Users\$Env:USERNAME\Documents\test.txt
$template2 = Get-Item C:\Users\$Env:USERNAME\Documents\test2.txt
$TemplateArray = $template1,$template2
$AddButton.add_Click({
# ...
# Same as before
# ...
if($OpenFileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK)
{
$TargetFile = Get-Item $OpenFileDialog.FileName
# Add the selected file to the CheckedListBox Items
$menulist.Items.Add($TargetFile)
# Add to the Templates array as well
$TemplateArray += $TargetFile
}
})
然后最后设置CheckedListBox的,以确保它显示文件名:
$menulist.DisplayMember = "Name"
因此,在GUI中,看起来您只有一个字符串列表,但当您检索SelectedItems
时,它是一个成熟的FileInfo
对象:
PS> $menulist.SelectedItems[0].FullName
C:\Users\CodeBusta\Documents\test.txt