简介

KryptonDataGridView 是增强型数据表格控件,替代标准 System.Windows.Forms.DataGridView。它继承 DataGridView 的全部功能(数据绑定、排序、编辑、列类型等),同时使用 Krypton 主题渲染表头、行、选中态和滚动条,使表格与整体界面风格统一。是管理列表、订单、日志等数据展示的核心控件。

KryptonDataGridView 示例截图
KryptonDataGridView 主题化数据表格

常用属性

属性类型说明
DataSourceobject数据源(DataTable / BindingList / List 等)
AutoGenerateColumnsbool是否根据数据源自动生成列
Columns集合列集合(可手动定义列类型和顺序)
Rows集合行集合
SelectedRows集合当前选中的行
SelectionModeDataGridViewSelectionMode选择模式(整行 / 单元格 / 列)
MultiSelectbool是否允许多选
ReadOnlybool是否只读(禁止编辑)
AllowUserToAddRowsbool是否显示末尾的"新增行"
RowHeadersVisiblebool是否显示行号列
AutoSizeColumnsModeDataGridViewAutoSizeColumnsMode列宽自适应模式
AlternatingRowsDefaultCellStyleCellStyle隔行变色样式

快速上手

基本用法(绑定 DataTable)

using Krypton.Toolkit;

// 创建表格
var dgvOrders = new KryptonDataGridView();
dgvOrders.Dock = DockStyle.Fill;
dgvOrders.AutoGenerateColumns = false;
dgvOrders.ReadOnly = true;
dgvOrders.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgvOrders.AllowUserToAddRows = false;
dgvOrders.RowHeadersVisible = false;

// 手动定义列
dgvOrders.Columns.Add(new DataGridViewTextBoxColumn
{
    DataPropertyName = "OrderId",
    HeaderText = "订单号",
    Width = 100
});
dgvOrders.Columns.Add(new DataGridViewTextBoxColumn
{
    DataPropertyName = "Customer",
    HeaderText = "客户",
    Width = 120
});
dgvOrders.Columns.Add(new DataGridViewTextBoxColumn
{
    DataPropertyName = "Amount",
    HeaderText = "金额",
    Width = 80,
    DefaultCellStyle = new DataGridViewCellStyle { Format = "C2" }
});

// 绑定数据
dgvOrders.DataSource = orderTable;

this.Controls.Add(dgvOrders);

绑定对象列表

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
}

var products = new BindingList
{
    new Product { Name = "键盘", Price = 299m, Stock = 50 },
    new Product { Name = "鼠标", Price = 149m, Stock = 120 }
};

dgvProducts.DataSource = products;
dgvProducts.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

进阶用法

隔行变色与选中样式

// 隔行浅灰背景
dgvOrders.AlternatingRowsDefaultCellStyle.BackColor =
    Color.FromArgb(249, 250, 251);

// 选中行使用翡翠绿
dgvOrders.DefaultCellStyle.SelectionBackColor =
    Color.FromArgb(204, 251, 241);
dgvOrders.DefaultCellStyle.SelectionForeColor =
    Color.FromArgb(17, 94, 89);

// 表头样式
dgvOrders.ColumnHeadersDefaultCellStyle.BackColor =
    Color.FromArgb(15, 118, 110);
dgvOrders.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
dgvOrders.ColumnHeadersDefaultCellStyle.Font =
    new Font("Microsoft YaHei UI", 9f, FontStyle.Bold);
dgvOrders.EnableHeadersVisualStyles = false;

行内按钮列与事件处理

// 添加"操作"按钮列
var colAction = new DataGridViewButtonColumn
{
    Name = "colAction",
    HeaderText = "操作",
    Text = "删除",
    UseColumnTextForButtonValue = true,
    Width = 70
};
dgvOrders.Columns.Add(colAction);

// 处理按钮点击
dgvOrders.CellClick += (s, e) =>
{
    if (e.RowIndex < 0) return;
    if (dgvOrders.Columns[e.ColumnIndex].Name == "colAction")
    {
        var orderId = dgvOrders.Rows[e.RowIndex]
            .Cells["OrderId"].Value.ToString();

        if (KryptonMessageBox.Show($"确定删除订单 {orderId}?",
            "确认", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            DeleteOrder(orderId);
        }
    }
};

// 双击行查看详情
dgvOrders.CellDoubleClick += (s, e) =>
{
    if (e.RowIndex < 0) return;
    var row = dgvOrders.Rows[e.RowIndex];
    ShowOrderDetail(row.Cells["OrderId"].Value.ToString());
};
提示:KryptonDataGridView 完全兼容标准 DataGridView 的 API,迁移时只需替换类型名即可。自定义表头颜色时记得设置 EnableHeadersVisualStyles = false,否则系统主题会覆盖自定义样式。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonDataGridView Examples/

包含:数据绑定、手动列定义、隔行变色、按钮列、单元格编辑演示。

相关控件