C# 具有关联数据源的DataGridView的自定义列名

C# 具有关联数据源的DataGridView的自定义列名,c#,winforms,datagridview,datasource,C#,Winforms,Datagridview,Datasource,如何为DataGridView和关联的数据源设置自定义列名 下面是一些代码: class Key { public string Value { get; } public DateTime ExpirationDate { get; } } List<Key> keys = new List<Key>(); ...// fill keys collection DataGridView dataGridView = createAndInitiali

如何为DataGridView和关联的数据源设置自定义列名

下面是一些代码:

class Key
{
    public string Value { get; }
    public DateTime ExpirationDate { get; }
}

List<Key> keys = new List<Key>();
...// fill keys collection

DataGridView dataGridView = createAndInitializeDataGridView();
dataGridView.DataSource = keys;
类密钥
{
公共字符串值{get;}
公共日期时间过期日期{get;}
}
列表键=新列表();
…//填充键集合
DataGridView DataGridView=CreateAndInitializedTagRidView();
dataGridView.DataSource=键;

这将为我提供列名称为“Value”和“ExpirationDate”的dataGridView。例如,我应该如何将名称更改为“Key”和“Expire”?

设置数据源后,您应该能够更改标题单元格:

    if (dataGridView1.Columns["Value"] != null)
        dataGridView1.Columns["Value"].HeaderText = "Key";
    if (dataGridView1.Columns["Expiration"] != null)
        dataGridView1.Columns["Expiration"].HeaderText = "Expire";
使用属性上的属性在DataGridView中指定列名:

class Key
{
    [System.ComponentModel.DisplayName("Key")]
    public string Value { get; }
    [System.ComponentModel.DisplayName("Expire")]
    public DateTime ExpirationDate { get; }
} 

如果数据来自数据库,则可以通过别名更改SQL中的列名。谢谢您的回答。它起作用了,但杰伊·里格斯给出了另一个答案,我更喜欢。酷,是的,我也更喜欢他的,这在记忆库中:-)
public DataTable SetColumnsHeaderName(string[] TagName)
{
    DataTable dt = new DataTable();
    foreach (var item in TagName)
    {
        dt.Columns.Add(item);
    }
    return dt;
}

public void ShowDataGridView()
{
    string[] tag = new string[] { "First Name", "Last Name", "Phone Number", };
    //fill datatable columns Name
    var dt = SetColumnsHeaderName(tag);
    //connect db and fetch table name
    var listx = db.tablename.ToList();
    foreach (var item in listx)
    {
        dt.Rows.Add(new object[] { item.Name, item.Family, item.Phone });
    }
    datagridView.DataSource = dt;
}