.net Powershell SaveFileDialog-弹出两次
请告诉我为什么在这段代码中SaveFileDialog()会两次提示输入文件名.net Powershell SaveFileDialog-弹出两次,.net,winforms,powershell,savefiledialog,.net,Winforms,Powershell,Savefiledialog,请告诉我为什么在这段代码中SaveFileDialog()会两次提示输入文件名 Function output-scrub{ [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null $global:SaveFileDialogNB = New-Object System.Windows.Forms.SaveFileDialog $global:SaveFileDialo
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($yourDialog.ShowDialog() -eq "OK")
{
# do something
}
或者,只需在if
语句的条件部分调用它,然后检查结果:
$result = $yourDialog.ShowDialog()
if($result -eq "OK")
{
# Do something
}
if($yourDialog.ShowDialog() -eq "OK")
{
# do something
}
旁注:处理一次性组件很重要,不要忽略它。显示对话框并确保在使用后将其释放的更好方法是:
$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() }
}
您已经调用了两次
$ShowDialog()
。在if
语句之前一次,在if语句的条件部分中第二次与“OK”进行比较
调用一次,捕获对话框结果,然后检查结果:
$result = $yourDialog.ShowDialog()
if($result -eq "OK")
{
# Do something
}
if($yourDialog.ShowDialog() -eq "OK")
{
# do something
}
或者,只需在if
语句的条件部分调用它,然后检查结果:
$result = $yourDialog.ShowDialog()
if($result -eq "OK")
{
# Do something
}
if($yourDialog.ShowDialog() -eq "OK")
{
# do something
}
旁注:处理一次性组件很重要,不要忽略它。显示对话框并确保在使用后将其释放的更好方法是:
$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() }
}
您已经调用了两次
$SaveFileDialogNB.ShowDialog()
。我用$global:SaveFileDialogNB.ShowDialog()| Out Null
调用它第二次是在哪里?我对它进行了注释,现在它只提示了一次,我只想知道现在是哪一个片段在生成提示。您调用了$SaveFileDialogNB.ShowDialog()
两次。我用$global:SaveFileDialogNB.ShowDialog()| Out Null
调用第二次的位置调用它?我注释掉了它,现在它只提示了一次,我只想知道现在是哪一段产生了提示。请在调用的两行中都发布。我知道第一个$global:SaveFileDialogNB.ShowDialog()| Out Null
一旦你指出第二个,我将接受这个答案。谢谢此处:if($SaveFileDialogNB.ShowDialog()-eq'OK')
您再次调用ShowDialog()
ShowDIalog()
是函数和提及行,执行它,然后将结果与“OK”进行比较。请将这两行都张贴在调用的位置。我知道第一个$global:SaveFileDialogNB.ShowDialog()| Out Null
一旦你指出第二个,我将接受这个答案。谢谢此处:if($SaveFileDialogNB.ShowDialog()-eq'OK')
您再次调用ShowDialog()
<代码>ShowDIalog()是函数和提及行,执行它,然后将结果与“OK”进行比较。