将浏览对话框中选择的文件文本传输到 Powershell 中的文本输入字段
Transfering file chosen text in Browse Dialog box to the Text Input field in Powershell
第一次尝试在 Powershell v3 中自定义对话框。我想在表单中添加一个浏览按钮。我有它,所以它显示了浏览按钮,但我似乎无法弄清楚我们从 OpenFileDialog 对象中获取文件名并将其显示在 objTextBox 字段中的部分。我已经研究过,但似乎找不到任何解释这部分过程的文章。
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Name = 'Text1'
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
#File Browser Code.
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = [Environment]::GetFolderPath('Desktop')
}
$browse_button = New-Object system.Windows.Forms.Button
$browse_button.Text = "Choose...."
$browse_button.Location = New-Object System.Drawing.Size(10,75)
$browse_button.Size = New-Object System.Drawing.Size(100,27)
$browse_button.Add_Click({[void]$FileBrowser.ShowDialog()})
$objForm.Controls.Add($browse_button)
我想我会稍微不同地处理它。我会制作一个显示“浏览文件”对话框并输出字符串的函数(我恰好随身携带)。然后为 Add_Click 设置文本框的值 = 函数。类似于:
Function Get-FilePath{
[CmdletBinding()]
Param(
[String]$Filter = "|*.*",
[String]$InitialDirectory = "C:\")
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $InitialDirectory
$OpenFileDialog.filter = $Filter
[void]$OpenFileDialog.ShowDialog()
$OpenFileDialog.filename
}
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Name = 'Text1'
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
$browse_button = New-Object system.Windows.Forms.Button
$browse_button.Text = "Choose...."
$browse_button.Location = New-Object System.Drawing.Size(10,75)
$browse_button.Size = New-Object System.Drawing.Size(100,27)
$browse_button.Add_Click({$objTextBox.Text = Get-FilePath -InitialDirectory "$env:UserProfile\Desktop"})
$objForm.Controls.Add($browse_button)
$browse_button.Text = "Choose...."
$browse_button.Location = New-Object System.Drawing.Size(10,75)
$browse_button.Size = New-Object System.Drawing.Size(100,27)
$browse_button.Add_Click({[void]$FileBrowser.ShowDialog()})
$objForm.Controls.Add($browse_button)
第一次尝试在 Powershell v3 中自定义对话框。我想在表单中添加一个浏览按钮。我有它,所以它显示了浏览按钮,但我似乎无法弄清楚我们从 OpenFileDialog 对象中获取文件名并将其显示在 objTextBox 字段中的部分。我已经研究过,但似乎找不到任何解释这部分过程的文章。
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Name = 'Text1'
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
#File Browser Code.
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = [Environment]::GetFolderPath('Desktop')
}
$browse_button = New-Object system.Windows.Forms.Button
$browse_button.Text = "Choose...."
$browse_button.Location = New-Object System.Drawing.Size(10,75)
$browse_button.Size = New-Object System.Drawing.Size(100,27)
$browse_button.Add_Click({[void]$FileBrowser.ShowDialog()})
$objForm.Controls.Add($browse_button)
我想我会稍微不同地处理它。我会制作一个显示“浏览文件”对话框并输出字符串的函数(我恰好随身携带)。然后为 Add_Click 设置文本框的值 = 函数。类似于:
Function Get-FilePath{
[CmdletBinding()]
Param(
[String]$Filter = "|*.*",
[String]$InitialDirectory = "C:\")
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $InitialDirectory
$OpenFileDialog.filter = $Filter
[void]$OpenFileDialog.ShowDialog()
$OpenFileDialog.filename
}
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Name = 'Text1'
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
$browse_button = New-Object system.Windows.Forms.Button
$browse_button.Text = "Choose...."
$browse_button.Location = New-Object System.Drawing.Size(10,75)
$browse_button.Size = New-Object System.Drawing.Size(100,27)
$browse_button.Add_Click({$objTextBox.Text = Get-FilePath -InitialDirectory "$env:UserProfile\Desktop"})
$objForm.Controls.Add($browse_button)
$browse_button.Text = "Choose...."
$browse_button.Location = New-Object System.Drawing.Size(10,75)
$browse_button.Size = New-Object System.Drawing.Size(100,27)
$browse_button.Add_Click({[void]$FileBrowser.ShowDialog()})
$objForm.Controls.Add($browse_button)