You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell的DataGridView中添加静态下拉列表及功能按钮

解决DataGridView添加下拉列及按钮的问题

1. 添加静态下拉列

要在DataGridView中添加包含choice1和choice2的下拉列,需使用DataGridViewComboBoxColumn类型替换默认文本列:

  • 移除原有的ColumnCount = 2及列名设置代码
  • 创建下拉列对象,指定列名与预设选项,再添加到DataGridView的列集合中

2. 添加保存和取消按钮

分别创建两个按钮控件并绑定对应逻辑:

  • 取消按钮:点击后直接关闭窗体
  • 保存按钮:示例将DataGridView数据导出为CSV文件(可按需修改保存逻辑)

完整修改后的代码

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

[System.Windows.Forms.Application]::EnableVisualStyles()

$Project = New-Object System.Windows.Forms.Form
$Project.ClientSize = New-Object System.Drawing.Point(604,460)
$Project.Text = "My DataGridView"
$Project.TopMost = $True
$Project.MinimumSize = $Project.ClientSize
$Project.FormBorderStyle = 'FixedDialog'
$Project.StartPosition = "CenterScreen"

# 创建DataGridView控件
$DataGridView = New-Object System.Windows.Forms.DataGridView
$DataGridView.Width = 572
$DataGridView.Height = 213
$DataGridView.ColumnHeadersVisible = $True
$DataGridView.Location = New-Object System.Drawing.Point(16,107)
$DataGridView.SelectionMode = 'FullRowSelect'
$DataGridView.MultiSelect = $False
$DataGridView.TabIndex = 0
$DataGridView.RowHeadersVisible = $False
$DataGridView.AutoSizeColumnsMode = 'Fill'
$DataGridView.AllowUserToAddRows = $False
$DataGridView.AllowUserToDeleteRows = $True
$DataGridView.AllowUserToResizeRows = $True
$DataGridView.ReadOnly = $False
$DataGridView.AllowDrop = $True
$DataGridView.RowTemplate.Height = 17
$DataGridView.Enabled = $True

# 添加普通文本列(Column0)和下拉列(Column1)
$textColumn = New-Object System.Windows.Forms.DataGridViewTextBoxColumn
$textColumn.Name = "Column0"
$textColumn.HeaderText = "Column0"

$comboColumn = New-Object System.Windows.Forms.DataGridViewComboBoxColumn
$comboColumn.Name = "Column1"
$comboColumn.HeaderText = "Column1"
$comboColumn.Items.AddRange("choice1", "choice2")
# 限制只能选择预设选项,禁止自定义输入
$comboColumn.DropDownStyle = [System.Windows.Forms.ComboBoxStyle]::DropDownList

$DataGridView.Columns.AddRange($textColumn, $comboColumn)

# 添加示例行
$DataGridView.Rows.Add('Row1Col0','choice1')
$DataGridView.Rows.Add('Row2Col0','choice2')

# 创建取消按钮
$cancelBtn = New-Object System.Windows.Forms.Button
$cancelBtn.Location = New-Object System.Drawing.Point(490, 350)
$cancelBtn.Size = New-Object System.Drawing.Size(80,30)
$cancelBtn.Text = "取消"
$cancelBtn.Add_Click({ $Project.Close() })

# 创建保存按钮
$saveBtn = New-Object System.Windows.Forms.Button
$saveBtn.Location = New-Object System.Drawing.Point(400, 350)
$saveBtn.Size = New-Object System.Drawing.Size(80,30)
$saveBtn.Text = "保存"
$saveBtn.Add_Click({
    # 示例:将数据保存到用户目录下的CSV文件
    $outputPath = Join-Path $env:USERPROFILE "DataGridView_Output.csv"
    $data = foreach ($row in $DataGridView.Rows) {
        if (-not $row.IsNewRow) {
            [PSCustomObject]@{
                Column0 = $row.Cells["Column0"].Value
                Column1 = $row.Cells["Column1"].Value
            }
        }
    }
    $data | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8
    [System.Windows.Forms.MessageBox]::Show("数据已保存到`n$outputPath", "保存成功")
})

# 将所有控件添加到窗体
$Project.Controls.AddRange(@($DataGridView, $cancelBtn, $saveBtn))

[void]$Project.ShowDialog()

关键说明

  • 下拉列通过DropDownStyle = DropDownList限制用户只能选择预设选项,避免自定义输入
  • 保存逻辑默认导出到用户目录下的DataGridView_Output.csv,可根据需求修改保存格式或路径
  • 取消按钮直接触发窗体关闭操作

内容的提问来源于stack exchange,提问作者KristianC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:14:53