好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WINFORM开发中 DATAGRIDVIEW自定义列的方法

在 WinForms 开发中,DataGridView 控件用于显示和编辑表格数据。你可以通过自定义列来满足特定需求,如添加不同类型的列(文本框、按钮、复选框等)。以下是自定义列的步骤:

1. 通过代码自定义列

你可以在代码中动态添加和配置列。

示例:添加不同类型的列

using System.Windows.Forms;

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

        // 创建 DataGridView

        DataGridView dataGridView = new DataGridView();

        dataGridView.Dock = DockStyle.Fill;

        this.Controls.Add(dataGridView);

        // 添加文本框列

        DataGridViewTextBoxColumn textBoxColumn = new DataGridViewTextBoxColumn();

        textBoxColumn.HeaderText = "姓名";

        textBoxColumn.Name = "NameColumn";

        dataGridView.Columns.Add(textBoxColumn);

        // 添加复选框列

        DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();

        checkBoxColumn.HeaderText = "是否选中";

        checkBoxColumn.Name = "CheckBoxColumn";

        dataGridView.Columns.Add(checkBoxColumn);

        // 添加按钮列

        DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn();

        buttonColumn.HeaderText = "操作";

        buttonColumn.Name = "ButtonColumn";

        buttonColumn.Text = "点击";

        buttonColumn.UseColumnTextForButtonValue = true;

        dataGridView.Columns.Add(buttonColumn);

        // 添加下拉框列

        DataGridViewComboBoxColumn comboBoxColumn = new DataGridViewComboBoxColumn();

        comboBoxColumn.HeaderText = "性别";

        comboBoxColumn.Name = "ComboBoxColumn";

        comboBoxColumn.Items.AddRange("男", "女", "其他");

        dataGridView.Columns.Add(comboBoxColumn);

        // 绑定数据(可选)

        dataGridView.Rows.Add("张三", true, "男");

        dataGridView.Rows.Add("李四", false, "女");

    }

}

2. 通过设计器自定义列

在 Visual Studio 中,可以通过设计器快速配置 DataGridView 列。

步骤:

打开 WinForms 设计器。

选择 DataGridView 控件。

点击右上角的小箭头,选择“编辑列”。

在弹出的对话框中,点击“添加”按钮,选择列类型(如 DataGridViewTextBoxColumn、DataGridViewButtonColumn 等)。

配置列的属性(如 HeaderText、Name、DataPropertyName 等)。

点击“确定”保存。

3. 绑定数据源时自定义列

如果 DataGridView 绑定到数据源(如 DataTable),可以通过设置列的 DataPropertyName 来绑定数据。

示例:

// 创建 DataTable

DataTable table = new DataTable();

table.Columns.Add("ID", typeof(int));

table.Columns.Add("Name", typeof(string));

table.Columns.Add("IsActive", typeof(bool));

// 添加数据

table.Rows.Add(1, "张三", true);

table.Rows.Add(2, "李四", false);

// 绑定到 DataGridView

dataGridView.DataSource = table;

// 自定义列

dataGridView.Columns["ID"].HeaderText = "编号";

dataGridView.Columns["Name"].HeaderText = "姓名";

dataGridView.Columns["IsActive"].HeaderText = "是否激活";

4. 处理按钮列点击事件

如果添加了按钮列,可以通过 CellContentClick 事件处理按钮点击。

示例:

dataGridView.CellContentClick += (sender, e) =>

{

    if (e.ColumnIndex == dataGridView.Columns["ButtonColumn"].Index && e.RowIndex >= 0)

    {

        MessageBox.Show("你点击了第 " + (e.RowIndex + 1) + " 行的按钮");

    }

};

5. 自定义列样式

你可以通过设置列的样式属性来自定义外观。

示例:

// 设置列宽度

dataGridView.Columns["NameColumn"].Width = 150;

// 设置列只读

dataGridView.Columns["CheckBoxColumn"].ReadOnly = true;

// 设置列头样式

dataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.LightBlue;

dataGridView.ColumnHeadersDefaultCellStyle.Font = new Font("微软雅黑", 10, FontStyle.Bold);

// 设置单元格样式

dataGridView.Rows[0].Cells["NameColumn"].Style.BackColor = Color.Yellow;

6. 自定义绘制列

如果需要更复杂的列样式,可以继承 DataGridViewColumn 或 DataGridViewCell 实现自定义绘制。

示例:自定义绘制单元格

public class CustomCell : DataGridViewTextBoxCell

{

    protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)

    {

        // 自定义绘制逻辑

        base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);

    }

}

// 使用自定义单元格

DataGridViewColumn customColumn = new DataGridViewColumn(new CustomCell());

customColumn.HeaderText = "自定义列";

dataGridView.Columns.Add(customColumn);

总结

通过代码或设计器可以轻松添加和配置 DataGridView 列。

支持多种列类型(文本框、复选框、按钮、下拉框等)。

可以通过事件处理交互逻辑,或通过样式属性自定义外观。

对于复杂需求,可以继承 DataGridViewColumn 或 DataGridViewCell 实现自定义绘制。


查看更多关于WINFORM开发中 DATAGRIDVIEW自定义列的方法的详细内容...

  阅读:18次