Как отобразить выбранный файл в текстовом графическом интерфейсе с помощью powershell? - PullRequest
0 голосов
/ 10 июня 2019

Я хочу выбрать файл из папки с графическим интерфейсом, а затем отобразить имя выбранного файла в текстовом поле. Я пробовал, но после выбора файла он не отображается в текстовом поле.

 Function 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.FileName

    } 

    Add-Type -AssemblyName System.Windows.Forms
    [System.Windows.Forms.Application]::EnableVisualStyles()

    $Form                            = New-Object system.Windows.Forms.Form
    $Form.ClientSize                 = '576,259'
    $Form.text                       = "Process"
    $Form.TopMost                    = $false
    #----------------------

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

    $SelectML                        = New-Object system.Windows.Forms.TextBox
    $SelectML.multiline              = $false
    $SelectML.width                  = 100
    $SelectML.height                 = 20
    $SelectML.location               = New-Object System.Drawing.Point(123,100)

    $ChooseML                        = New-Object System.Windows.Forms.Button
    $ChooseML.AutoSize               = $true
    $ChooseML.width                  = 100
    $ChooseML.height                 = 20
    $ChooseML.location               = New-Object System.Drawing.Point(123,69)
    $ChooseML.ForeColor              = "#ffffff"
    $ChooseML.BackColor              = "#093c76"

    $ChooseML.Add_Click({$SelectML.Text = File})

    $Form.Controls.AddRange(@($ChooseML, $ChooseML_L, $SelectML))
    [void] $Form.ShowDialog()

Мое ожидание, после того как я выберу файл, он будет отображаться в текстовом поле.

1 Ответ

1 голос
/ 10 июня 2019

Это потому, что вы ничего не возвращаете из вашей File функции выбора.

Просто добавьте это к функции.

Function 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.FileName
    Return $SelectedFile #add this return
} 

Либо так, либо присвойте значение *От 1007 * до $SelectML.Text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...