Powershell gui 在文本框中输入变量

Powershell gui enter variable to text box

我正在开发一个应用程序,在其中一个功能中,我想实现通过浏览“我的电脑”选择源文件夹和目标文件夹,或者只是复制粘贴文本框中的路径,从而生成一个变量供以后使用

如果在浏览文件夹时选择了路径,我希望所选路径显示在文本框中。

在 运行 运行 GUI 时出现错误:“您不能在空值表达式上调用方法” 在我不想调用的行中在文本框中显示选定的文件夹。我测试了打开我的电脑浏览的脚本部分,如果 运行 单独生成一个变量,但我有一种感觉,当 运行 在完整代码中我没有得到一个变量.我的想法是否正确,我该如何解决?

##########################################################################
# Variables
##########################################################################

# Language variables
$main_form_title_text = "File renaming app"
$info_text_source_folder = "Select source folder or paste it below"
$Source_folder_button_text = "Sel. source folder"
$info_text_destination_folder = "Select dest. folder or paste it below"
$Destination_folder_button_text = "Sel. dest. folder"



##########################################################################
# Load forms
##########################################################################
add-type -AssemblyName system.windows.forms
add-type -assemblyname system.drawing


##########################################################################
# Main Window Form
##########################################################################
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text = $main_form_title_text
$main_form.TopMost = $true
$main_form.icon=$icon
$main_form.BackColor = [System.Drawing.Color]::FromArgb(255,255,255,255)
$main_form.Size = New-Object System.Drawing.Size(450,525)

##########################################################################
# Source folder selection instructions
##########################################################################

$infosource = New-Object System.Windows.Forms.label
$infosource.Location = New-Object System.Drawing.Size(10,45)
$infosource.Size = New-Object System.Drawing.Size(200,15)
$infosource.BackColor = "Transparent"
$infosource.ForeColor = "black"
$infosource.Text = $info_text_source_folder
$main_form.Controls.Add($infosource)



##########################################################################
# Select source folder button
##########################################################################

$Select_source_folder = New-Object System.Windows.Forms.Button
$Select_source_folder.Location = New-Object System.Drawing.Size(230,40)
$Select_source_folder.Size = New-Object System.Drawing.Size(120,25)
$Select_source_folder.Text = $Source_folder_button_text
$main_form.Controls.Add($Select_source_folder)
$Select_source_folder.Add_Click({


Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$source = $FolderBrowser.SelectedPath

$sourceinfo.items.insert(0, $source)
})

############################################################################
# Source folder textbox/info
############################################################################

$sourceinfo = New-Object Windows.Forms.Textbox
$sourceinfo = New-Object System.Windows.Forms.Textbox
$sourceinfo.Location = New-Object System.Drawing.Size(10,70)
$sourceinfo.Size = New-Object System.Drawing.Size(340,25)

$main_form.Controls.Add($sourceinfo)


##########################################################################
# Source folder selection instructions
##########################################################################

$infosource = New-Object System.Windows.Forms.label
$infosource.Location = New-Object System.Drawing.Size(10,115)
$infosource.Size = New-Object System.Drawing.Size(200,15)
$infosource.BackColor = "Transparent"
$infosource.ForeColor = "black"
$infosource.Text = $info_text_destination_folder
$main_form.Controls.Add($infosource)

##########################################################################
#  Select destination folder button
##########################################################################

$Select_destination_folder = New-Object System.Windows.Forms.Button
$Select_destination_folder.Location = New-Object System.Drawing.Size(230,110)
$Select_destination_folder.Size = New-Object System.Drawing.Size(120,25)
$Select_destination_folder.Text = $Destination_folder_button_text
$main_form.Controls.Add($Select_destination_folder)
$Select_destination_folder.Add_Click({


Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$destination = $FolderBrowser.SelectedPath

$destinationinfo.items.insert(0, $destination)
})


############################################################################
# Destination folder textbox/info
############################################################################

$destinationinfo = New-Object Windows.Forms.Textbox
$destinationinfo = New-Object System.Windows.Forms.Textbox
$destinationinfo.Location = New-Object System.Drawing.Size(10,140)
$destinationinfo.Size = New-Object System.Drawing.Size(340,25)

$main_form.Controls.Add($destinationinfo)

##########################################################################
# Start form
##########################################################################
[void]$main_form.ShowDialog()

换行

$sourceinfo.items.insert(0, $source)

$sourceinfo.Text = $source