使用 PowerShell 中 OpenDialog 文件名返回的文件名更新 TextBox 文本字段

问题描述 投票:0回答:1

我使用 PowerShell 创建了一个带有 TextBox 字段和 Button 对象的 Windows 窗体。当我单击按钮时,它将打开 OpenFileDialog 供用户选择文件。如何从 OpenFileDialog 返回选定的文件名并显示在 TextBox 字段中?

示例代码如下:

$Filename = New-Object TextBox
$Filename.Location = New-Object System.Drawing.Point(230, 80)
$Filename.Size = New-Object System.Drawing.Size(400, 80)
$Filename.Font = New-Object System.Drawing.Font("Calibri", 12, [FontStyle]::Bold)
# $Filename.Text = $OpenFileDialog.FileName

$BrowseButton = New-Object Button
$BrowseButton.Location = New-Object System.Drawing.Point(650, 80)
$BrowseButton.Size = New-Object System.Drawing.Size(100, 30)
$BrowseButton.Font = New-Object System.Drawing.Font("Calibri", 12, [FontStyle]::Bold)
$BrowseButton.Text = "Browse..."
$BrowseButton.Add_Click($BrowseButton_Click)

$BrowseButton_Click =
{
  $OpenFileDialog = New-Object OpenFileDialog

  $OpenFileDialog.Filter = "Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx|All files (*.*)|*.*"
  $OpenFileDialog.FilterIndex = 2
  $OpenFileDialog.RestoreDirectory = $true

  if ($OpenFileDialog.ShowDialog() -eq [DialogResult]::OK)
  {
    # Do something to return the $OpenFileDialog.FileName to the TextBox field
  }
}
powershell textbox filenames display openfiledialog
1个回答
0
投票

您评论过的行:

$Filename.Text = $OpenFileDialog.FileName

应该是由于您的

if
状况而发生的情况:

if ($OpenFileDialog.ShowDialog() -eq [DialogResult]::OK) {
    ....
}

为了更新您的

.Text
TextBox
属性。

还值得注意的是,

$BrowseButton_Click
ScriptBlock 必须在添加之前定义:
$BrowseButton.Add_Click($BrowseButton_Click)
。 PowerShell 逐行解释代码,正如您现在所做的那样,您将尝试将
$null
添加到您的
.Click
事件中。

总结:

$BrowseButton_Click = {
    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.Filter = 'Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx|All files (*.*)|*.*'
    $OpenFileDialog.FilterIndex = 2
    $OpenFileDialog.RestoreDirectory = $true
    if ($OpenFileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
        $Filename.Text = $OpenFileDialog.FileName
    }
}

$BrowseButton = New-Object System.Windows.Forms.Button
$BrowseButton.Location = New-Object System.Drawing.Point(650, 80)
$BrowseButton.Size = New-Object System.Drawing.Size(100, 30)
$BrowseButton.Font = [System.Drawing.Font]::new('Calibri', 12, [System.Drawing.FontStyle]::Bold)
$BrowseButton.Text = 'Browse...'
$BrowseButton.Add_Click($BrowseButton_Click)
$form.Controls.Add($BrowseButton)
© www.soinside.com 2019 - 2024. All rights reserved.