为什么DataColumn.Caption不起作用?

Ale*_* P. 14 .net c# datacolumn

我正在尝试创建一个DataTable并将其绑定到DataGridView.它工作,但我不能通过Caption属性设置列标题.它使用ColumnName("城市")显示标题.MSDN

"您可以使用Caption属性显示DataColumn的描述性或友好名称."

这是我的代码:

DataColumn dc = new DataColumn("City", typeof(string));
dc.Caption = "?????"; 

DataTable dt = new DataTable();
dt.Columns.Add(dc); 

DataRow row = dt.NewRow(); 
row["City"] = "Moscow";
dt.Rows.Add(row);

datagridview.DataSource = dt;
Run Code Online (Sandbox Code Playgroud)

aqu*_*nas 24

好吧,MSDN是对的.这就是Caption房产的用途.但是,这并不意味着控制制造商必须使用标题属性.在这种情况下,微软没有这样做(虽然他们真的应该这样做).您可以将代码修改为:

///snip

dataGridView1.DataSource = dt;

foreach (DataGridViewColumn col in dataGridView1.Columns) {
  col.HeaderText = dt.Columns[col.HeaderText].Caption;
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*ray 6

我认为当您绑定到 DataTable 时,DataGridView 不使用 Caption 属性。它仅在绑定到数据集时才有效。

您可以像这样手动修改列标题:

dataGridView.Columns[i].HeaderText = dt.Columns[i].Caption;
Run Code Online (Sandbox Code Playgroud)