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

如何将DataGridView绑定到指定属性?(含C#数据类示例)

如何在DataGridView中仅显示Data类的指定属性?

嘿,针对你这个需求,其实有两种超简单的实现方式,选哪个全看你习惯:

方法一:手动指定要显示的列(灵活可控)

这种方式适合你偶尔需要调整列的显示内容、顺序或者样式的场景,步骤很清晰:

  1. 把DataGridView的AutoGenerateColumns属性设为false,这样它就不会自动根据类的属性生成所有列了;
  2. 手动添加你需要的列,并把每个列的DataPropertyName对应到Data类的属性上。

举个代码例子,比如在窗体的Load事件里这么写:

private void Form1_Load(object sender, EventArgs e)
{
    // 假设你已经有了Data的集合数据源
    List<Data> dataList = GetYourDataSource();

    // 关闭自动列生成
    dataGridView1.AutoGenerateColumns = false;

    // 添加要显示的A列
    DataGridViewTextBoxColumn colA = new DataGridViewTextBoxColumn();
    colA.HeaderText = "属性A";
    colA.DataPropertyName = "A"; // 和Data类的属性名对应
    dataGridView1.Columns.Add(colA);

    // 添加要显示的C列
    DataGridViewTextBoxColumn colC = new DataGridViewTextBoxColumn();
    colC.HeaderText = "属性C";
    colC.DataPropertyName = "C";
    dataGridView1.Columns.Add(colC);

    // 绑定数据源
    dataGridView1.DataSource = dataList;
}

方法二:用特性标记隐藏不需要的列(更省心)

如果你不想手动加列,想让DataGridView自动生成列但跳过某些属性,那可以用System.ComponentModel里的Browsable特性,直接在你不想显示的属性上标记就行:

先修改你的Data类:

using System.ComponentModel;

class Data
{
    public int A { set; get;}
    [Browsable(false)] // 标记这个属性不显示在DataGridView里
    public long B { set; get;}
    public string C { set; get;}
}

然后绑定数据源的时候,只需要把AutoGenerateColumns设为true(默认就是true,甚至可以不用写),直接绑定就行:

private void Form1_Load(object sender, EventArgs e)
{
    List<Data> dataList = GetYourDataSource();
    dataGridView1.DataSource = dataList;
    // 因为AutoGenerateColumns默认是true,所以会自动生成A和C的列,B被特性隐藏了
}

这俩方法都很简单,如果你之后可能要调整列的样式或者顺序,选第一种;如果只是单纯想隐藏某个属性,第二种更省事~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:10:30