基本上就是我想要做的是有它打開一個打開文件對話框窗口,可以讓我選擇一個文件,文件名保存到一個變量,這樣我可以在其他地方使用它瀏覽按鈕獲取從打開文件對話框的文件名。我有以下功能通過點擊瀏覽按鈕
Function Get-FileName($initialDirectory) {
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.FileName
} #end function Get-FileName
,當自身的運行將打開dialogwindow和輸出,我選擇到控制檯窗口中的文件。當我添加按鈕事件來彈出 - 打開對話窗口時,我使用$button1.add_Click({Get-FileName})
單擊時會打開對話窗口,但我不確定如何將文件名(在對話窗口中選擇的文件)輸出到它自己的變量中。我覺得我很接近,但我只需要一個小小的方向,任何幫助將不勝感激。
屬性'$ OpenFileDialog.FileName'將從輸出功能,因爲它沒有以其他方式被分配或任何地方捕獲。 '$ selectedPath = Get-FileName('C:\ WINDOWS')'不能按預期工作嗎?順便說一下,您可能想要將最後兩行更改爲'if($ OpenFileDialog.ShowDialog()-eq [System.Windows.Forms.DialogResult] :: OK){$ OpenFileDialog.FileName}'只是爲了處理該案例用戶取消對話框。 – BACON
是的,'$ selectedPath = Get-FileName('C:\ WINDOWS')'不會在'$ button1.add_click({})'事件中按預期工作。 – themackyo
我們可能需要使用按鈕查看錶單的代碼。另外,我還沒有從PowerShell做過很多Windows窗體編程,但我認爲你需要使用['Register-ObjectEvent' cmdlet](https://technet.microsoft.com/library/hh849929.aspx)進行註冊事件處理程序。類似於'Register-ObjectEvent -InputObject $ button1 -EventName'點擊'-Action {$ selectedPath = Get-FileName('C:\ WINDOWS')}',儘管我並不認爲'$ selectedPath'會在'ScriptBlock' ... – BACON