C# 如何设置DataGridView的标题
我在WinForm应用程序中使用DataGridView来显示数据表。除了DataColumn的Caption属性外,其他一切都正常工作。我试图设置Caption属性,但DataGridView似乎使用DataColumn的名称作为标题,而不是Caption属性的值 有谷歌为这个,似乎这个标题属性是故意禁用 我的WinForm应用程序是本地化的,我需要用中文显示标题。有人知道我怎么做吗 下面是我设置数据表的代码C# 如何设置DataGridView的标题,c#,winforms,datagridview,internationalization,C#,Winforms,Datagridview,Internationalization,我在WinForm应用程序中使用DataGridView来显示数据表。除了DataColumn的Caption属性外,其他一切都正常工作。我试图设置Caption属性,但DataGridView似乎使用DataColumn的名称作为标题,而不是Caption属性的值 有谷歌为这个,似乎这个标题属性是故意禁用 我的WinForm应用程序是本地化的,我需要用中文显示标题。有人知道我怎么做吗 下面是我设置数据表的代码 // Create a new DataTable. DataTable table
// Create a new DataTable.
DataTable table = new DataTable("Payments");
// Declare variables for DataColumn and DataRow objects.
DataColumn column;
DataRow row;
// Create new DataColumn, set DataType,
// ColumnName and add to DataTable.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
column.Caption = LocalizedCaption.get("id") //LocalizedCaption is my library to retrieve the chinese caption
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);
// Create three new DataRow objects and add them to the DataTable
for (int i = 0; i <= 2; i++)
{
row = table.NewRow();
row["id"] = i;
table.Rows.Add(row);
}
//assign the DataTable as the datasource for a DataGridView
dataGridView1.DataSource = table;
//创建一个新的数据表。
数据表=新数据表(“付款”);
//为DataColumn和DataRow对象声明变量。
数据列;
数据行;
//创建新数据列,设置数据类型,
//ColumnName并添加到DataTable。
column=newdatacolumn();
column.DataType=System.Type.GetType(“System.Int32”);
column.ColumnName=“id”;
column.ReadOnly=true;
column.Unique=true;
column.Caption=LocalizedCaption.get(“id”)//LocalizedCaption是我检索中文标题的库
//将列添加到DataColumnCollection。
表.列.添加(列);
//创建三个新的DataRow对象并将它们添加到DataTable
对于(int i=0;i您有几个选项。这里有一个快速修复方法应该可以工作,只需在代码块末尾添加以下内容:
//Copy column captions into DataGridView
for (int i = 0; i < table.Columns.Count; i++) {
if (dataGridView1.Columns.Count >= i) {
dataGridView1.Columns[i].HeaderText = table.Columns[i].Caption;
}
}
//将列标题复制到DataGridView中
for(int i=0;i=i){
dataGridView1.Columns[i].HeaderText=table.Columns[i].Caption;
}
}
如您所见,这只是将现有列标题复制到每个DataGridView列的正确HeaderText属性中。这假设在绑定DataTable之前DataGridView中不存在以前的列。您有几个选项。这里有一个快速修复方法,应该可以工作,只需在代码块末尾添加此项:>
//Copy column captions into DataGridView
for (int i = 0; i < table.Columns.Count; i++) {
if (dataGridView1.Columns.Count >= i) {
dataGridView1.Columns[i].HeaderText = table.Columns[i].Caption;
}
}
//将列标题复制到DataGridView中
for(int i=0;i=i){
dataGridView1.Columns[i].HeaderText=table.Columns[i].Caption;
}
}
如您所见,这只是将现有列标题复制到每个DataGridView列的正确HeaderText属性中。这假设在绑定DataTable之前DataGridView中不存在以前的列。这对我来说很有效:
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var dGrid = (sender as DataGrid);
if (dGrid == null) return ;
var view = dGrid.ItemsSource as DataView;
if (view == null) return;
var table = view.Table;
e.Column.Header = table.Columns[e.Column.Header as String].Caption;
}
这对我很有用:
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var dGrid = (sender as DataGrid);
if (dGrid == null) return ;
var view = dGrid.ItemsSource as DataView;
if (view == null) return;
var table = view.Table;
e.Column.Header = table.Columns[e.Column.Header as String].Caption;
}