DataGridView 代码中添加列

DataGridView按钮列创建
本文介绍如何在DataGridView中手动创建按钮列,并提供代码示例。通过设置AutoGenerateColumns属性为false来禁止自动生成列,然后使用DataGridViewButtonColumn创建自定义按钮列。

 

也可以通过直接点击DataGridView的编辑列,点击“添加”,选择“未绑定列”,选择类型为“DataGridViewButtonColumn”。

<think> 我们正在处理一个关于WinForm中DataGridView控件添加的问题。 根据引用[1]:我们可以通过设置Columns属性来操作集合。引用[2]展示了动态添加行或的例子,其中添加了两种类型的单元格(复选框和文本框)到行中,但添加的方法类似。 另外,引用[3]提到了添加checkbox时需要注意的问题(结束编辑状态)。 添加的一般步骤: 1. 创建对象(例如:DataGridViewTextBoxColumn, DataGridViewCheckBoxColumn等) 2. 设置的属性(如HeaderText,Name等) 3. 将添加DataGridView的Columns集合中 特别地,对于复选框,需要注意在读取值之前结束编辑(引用[3])。 因此,我们可以这样回答: 方法一:在设计时通过设计器添加(可视化操作) 方法二:在代码中动态添加(以文本框和复选框为例) 同时,考虑到用户可能需要具体的代码示例,我们将提供两种常见添加方法。 注意:用户的问题只提到添加,所以我们重点回答添加的方法。 根据引用[1]中提到的数据源绑定方式,如果已经设置了DataSource,那么可能会自动生成。但用户的问题可能是要手动添加(非绑定模式)。 因此,我们分两种情况: 1. 非数据绑定模式(手动添加) 2. 数据绑定模式(通过数据源自动生成,但也可以手动添加,不过通常我们通过设计模板或事件来控制) 但用户明确问的是“添加”,所以我们重点放在非绑定模式下手动添加。 回答结构: 1. 介绍添加的两种主要方式(设计时和运行时) 2. 提供运行时添加代码示例(文本框和复选框) 3. 注意事项(如复选框需要结束编辑) 由于引用[3]提到了复选框的问题,我们在添加复选框时特别提醒。 同时,生成相关问题。 </think>在 WinForm 中为 DataGridView 控件添加的方法主要有两种方式,具体操作如下: ### 方法一:设计时添加(可视化操作) 1. 选中 DataGridView 控件,点击右上角的智能标记(▶) 2. 选择添加】 3. 在对话框中配置属性: - **名称**:的标识符(如 `colName`) - **页眉文本**:标题显示文本(如 "姓名") - **类型**:选择类型(文本框/复选框/按钮等) 4. 点击【添加】后调整顺序,最后点【确定】 ### 方法二:代码动态添加(常用) ```csharp // 添加文本框 DataGridViewTextBoxColumn textCol = new DataGridViewTextBoxColumn(); textCol.HeaderText = "姓名"; // 标题 textCol.Name = "colName"; // 标识符 textCol.DataPropertyName = "Name"; // 绑定数据源的字段名 dataGridView1.Columns.Add(textCol); // 添加复选框 DataGridViewCheckBoxColumn checkCol = new DataGridViewCheckBoxColumn(); checkCol.HeaderText = "选择"; checkCol.Name = "colSelect"; dataGridView1.Columns.Add(checkCol); // 添加按钮 DataGridViewButtonColumn btnCol = new DataGridViewButtonColumn(); btnCol.HeaderText = "操作"; btnCol.Text = "删除"; btnCol.UseColumnTextForButtonValue = true; // 显示按钮文本 dataGridView1.Columns.Add(btnCol); ``` ### 关键注意事项 1. **数据绑定场景**: - 若已设置 `DataSource`(如绑定 `DataTable`),会自动生成 - 需手动控制时,设置 `AutoGenerateColumns = false` ```csharp dataGridView1.AutoGenerateColumns = false; ``` 2. **复选框特殊处理**: - 读取值前需调用 `EndEdit()` 结束编辑状态[^3] ```csharp dataGridView1.EndEdit(); // 确保获取最新勾选状态 bool isChecked = Convert.ToBoolean(dataGridView1.Rows[i].Cells["colSelect"].Value); ``` 3. **位置控制**: - 调整显示顺序:`DisplayIndex` 属性 - 隐藏:`Visible = false` ```csharp textCol.DisplayIndex = 0; // 设置为首 checkCol.Visible = false; // 隐藏 ``` ### 示例完整流程 ```csharp // 创建DataGridView DataGridView dgv = new DataGridView(); dgv.Dock = DockStyle.Fill; // 添加 dgv.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText="ID", Name="colId" }); dgv.Columns.Add(new DataGridViewCheckBoxColumn() { HeaderText="启用", Name="colActive" }); // 添加数据 dgv.Rows.Add(1, true); dgv.Rows.Add(2, false); // 添加到窗体 this.Controls.Add(dgv); ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值