如何使用 OpenFileDialog 使用 Powershell 转到特定文件夹? [英] How to use OpenFileDialog to go to specific folder using Powershell?

查看:38
本文介绍了如何使用 OpenFileDialog 使用 Powershell 转到特定文件夹?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 GUI 来选择文件.我使用 OpenFileDialog.但是当我按下按钮打开文件时,目标文件夹有时会有所不同.我想在单击按钮时将其设为默认文件夹.

I have an GUI to select a file. I use OpenFileDialog. But when I press the button to open the file, the target folder sometime different. I want to make it default folder when I click the button.

Function Sel_File($InitialDirectory)
{
    Add-Type -AssemblyName System.Windows.Forms
    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.Title = "Please Select File"
    $OpenFileDialog.InitialDirectory = $InitialDirectory
    $OpenFileDialog.filter = "All files (*.*)| *.*"
    If ($OpenFileDialog.ShowDialog() -eq "Cancel") 
    {
    [System.Windows.Forms.MessageBox]::Show("No File Selected. Please select a file !", "Error", 0, 
    [System.Windows.Forms.MessageBoxIcon]::Exclamation)
    }   $Global:SelectedFile = $OpenFileDialog.SafeFileName
    
}
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

$Form                            = New-Object system.Windows.Forms.Form
$Form.AutoSize                   = $true
$Form.text                       = "Auto GM Creation"
$Form.TopMost                    = $true
#----------------------

$ChooseML_L                      = New-Object system.Windows.Forms.Label
$ChooseML_L.text                 = "MLs"
$ChooseML_L.AutoSize             = $true
$ChooseML_L.width                = 25
$ChooseML_L.height               = 10
$ChooseML_L.location             = New-Object System.Drawing.Point(28,20)
$ChooseML_L.ForeColor            = "#000000"

$SelectML                        = New-Object system.Windows.Forms.TextBox
$SelectML.AutoSize               = $true
$SelectML.width                  = 150
$SelectML.height                 = 30
$SelectML.location               = New-Object System.Drawing.Point(120,40)
$SelectML.Text                   = "Selected ML"

$ChooseML                        = New-Object System.Windows.Forms.Button
$ChooseML.text                   = "Select File"
$ChooseML.AutoSize               = $true
$ChooseML.width                  = 90
$ChooseML.height                 = 20
$ChooseML.location               = New-Object System.Drawing.Point(28,38)
$ChooseML.ForeColor              = "#ffffff"
$ChooseML.BackColor              = "#093c76"

$ChooseML.Add_Click({Sel_File
$SelectML.Text = $Global:SelectedFile
}) 

#----------
$Apply                         = New-Object system.Windows.Forms.Button
$Apply.BackColor               = "#6996c8"
$Apply.text                    = "Apply"
$Apply.width                   = 99
$Apply.height                  = 30
$Apply.location                = New-Object System.Drawing.Point(320,190)

#----------
$Cancel                         = New-Object system.Windows.Forms.Button
$Cancel.BackColor               = "#6996c8"
$Cancel.text                    = "Cancel"
$Cancel.width                   = 98
$Cancel.height                  = 30
$Cancel.location                = New-Object System.Drawing.Point(450,190)
$Cancel.Add_Click({$Form.Close()})

#-----------

$Prefix                      = New-Object system.Windows.Forms.Label
$Prefix.text                 = "Prefix"
$Prefix.AutoSize             = $true
$Prefix.width                = 25
$Prefix.height               = 10
$Prefix.location             = New-Object System.Drawing.Point(28,80)
$Prefix.ForeColor            = "#000000"

$NB                              = New-Object system.Windows.Forms.RadioButton
$NB.text                         = "NB"
$NB.AutoSize                     = $true
$NB.BackColor                    = "#4a90e2"
$NB.width                        = 104
$NB.height                       = 20
$NB.location                     = New-Object System.Drawing.Point(28,100)

$DPC                             = New-Object system.Windows.Forms.RadioButton
$DPC.text                        = "DPC"
$DPC.AutoSize                    = $true
$DPC.BackColor                   = "#4a90e2"
$DPC.width                       = 104
$DPC.height                      = 20
$DPC.location                    = New-Object System.Drawing.Point(100,100)

$Form.Controls.AddRange(@($ChooseML, $Prefix, $ChooseML_L, $Apply, $Cancel, $SelectML, $NB, $DPC))
[void] $Form.ShowDialog()

使用此代码,我可以转到任何文件夹.我希望我可以转到我需要的特定文件夹并选择文件.

With this code I can go to any folder. My expectation I can go to a specific folder that I need and choose the file.

这是有效的

Function Sel_File
 {
 $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
 $OpenFileDialog.InitialDirectory = "C:\Users\XX"
 $OpenFileDialog.Title = "Please Select File"
 $OpenFileDialog.filter = "All files (*.*)| *.*"
 If ($OpenFileDialog.ShowDialog() -eq "Cancel") 
 {
  [System.Windows.Forms.MessageBox]::Show("No File Selected. Please select a file !", "Error", 0, 
  [System.Windows.Forms.MessageBoxIcon]::Exclamation)
  }   $Global:SelectedFile = $OpenFileDialog.SafeFileName
    
}

推荐答案

如果你想保留最后一个文件夹,你可以这样做:

If you want keep the last folder you can do it:

 $OpenFileDialog.RestoreDirectory = $True

如果您只想指定初始目录,请像这样修改您的代码:

If you want just specify your initial directory modify your code like this:

Sel_File "c:\temp"

这篇关于如何使用 OpenFileDialog 使用 Powershell 转到特定文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆