Powershell SaveFileDialog - 弹出两次
Powershell SaveFileDialog - Pops twice
请告诉我为什么在此代码中 SaveFileDialog() 提示输入文件名两次。
Function output-scrub{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$global:SaveFileDialogNB = New-Object System.Windows.Forms.SaveFileDialog
$global:SaveFileDialogNB.initialDirectory = "\server\folder"
$global:SaveFileDialogNB.filter = "All files (*.*)| *.*"
$global:SaveFileDialogNB.SupportMultiDottedExtensions = $true
#$global:SaveFileDialogNB.ShowDialog() | Out-Null
#just to display the filename value
$global:SaveFileDialogNB.filename
#get just filename and the extension into a variable
#$F1Filename = Split-Path $global:OpenFileDialog.filename -Leaf ---commented out, only here if we only want to show filename extension alone.
$global:SaveFileDialogNB.ShowDialog() | Out-Null
if($SaveFileDialogNB.ShowDialog() -eq 'OK'){
convertToHashTWO
}
return
}
function outPutScrubbedBalances{
output-scrub
write-host "file has been saved"
return
}
快把我逼疯了。
您已拨打 $ShowDialog()
两次电话。一次在 if
语句之前,第二次在 if 语句的条件部分与 'OK' 进行比较。
调用一次,捕获对话结果,然后查看结果:
$result = $yourDialog.ShowDialog()
if($result -eq "OK")
{
# Do something
}
或者,在 if
语句的条件部分调用它并检查结果:
if($yourDialog.ShowDialog() -eq "OK")
{
# do something
}
Side-note: 处理一次性组件很重要,不要忽视它。显示对话框并确保它在使用后被释放的更好方法是:
$dialog = New-Object System.Windows.Forms.SaveFileDialog
try
{
#Set up dialog, for example
$dialog.filter = "All files (*.*)| *.*"
if($dialog.ShowDialog() -eq "OK")
{
# do something here, for example
Write-Host "Save Clicked."
}
}
finally
{
if($dialog) { $dialog.Dispose() }
}
请告诉我为什么在此代码中 SaveFileDialog() 提示输入文件名两次。
Function output-scrub{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$global:SaveFileDialogNB = New-Object System.Windows.Forms.SaveFileDialog
$global:SaveFileDialogNB.initialDirectory = "\server\folder"
$global:SaveFileDialogNB.filter = "All files (*.*)| *.*"
$global:SaveFileDialogNB.SupportMultiDottedExtensions = $true
#$global:SaveFileDialogNB.ShowDialog() | Out-Null
#just to display the filename value
$global:SaveFileDialogNB.filename
#get just filename and the extension into a variable
#$F1Filename = Split-Path $global:OpenFileDialog.filename -Leaf ---commented out, only here if we only want to show filename extension alone.
$global:SaveFileDialogNB.ShowDialog() | Out-Null
if($SaveFileDialogNB.ShowDialog() -eq 'OK'){
convertToHashTWO
}
return
}
function outPutScrubbedBalances{
output-scrub
write-host "file has been saved"
return
}
快把我逼疯了。
您已拨打 $ShowDialog()
两次电话。一次在 if
语句之前,第二次在 if 语句的条件部分与 'OK' 进行比较。
调用一次,捕获对话结果,然后查看结果:
$result = $yourDialog.ShowDialog()
if($result -eq "OK")
{
# Do something
}
或者,在 if
语句的条件部分调用它并检查结果:
if($yourDialog.ShowDialog() -eq "OK")
{
# do something
}
Side-note: 处理一次性组件很重要,不要忽视它。显示对话框并确保它在使用后被释放的更好方法是:
$dialog = New-Object System.Windows.Forms.SaveFileDialog
try
{
#Set up dialog, for example
$dialog.filter = "All files (*.*)| *.*"
if($dialog.ShowDialog() -eq "OK")
{
# do something here, for example
Write-Host "Save Clicked."
}
}
finally
{
if($dialog) { $dialog.Dispose() }
}