如何在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
相关产品推荐
相关产品推荐

