Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置DataGridView的标题_C#_Winforms_Datagridview_Internationalization - Fatal编程技术网

C# 如何设置DataGridView的标题

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

我在WinForm应用程序中使用DataGridView来显示数据表。除了DataColumn的Caption属性外,其他一切都正常工作。我试图设置Caption属性,但DataGridView似乎使用DataColumn的名称作为标题,而不是Caption属性的值

有谷歌为这个,似乎这个标题属性是故意禁用

我的WinForm应用程序是本地化的,我需要用中文显示标题。有人知道我怎么做吗

下面是我设置数据表的代码

// 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;
}