C# 如何在StackedHeaderDecorator添加的多层列标题下添加行

C# 如何在StackedHeaderDecorator添加的多层列标题下添加行,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在写C。我使用从下面链接复制的这段代码向DataGridView显示多层列标题 我成功地显示了多层列标题本身,但无法在列标题下添加行。相反,我将添加的行显示在除多层列标题外自动创建的列标题中 private void Form1\u加载(对象发送方,事件参数e) { DataGridView dgv=DataGridView_-syukei; StackedHeaderDecorator objREnderer=新StackedHeaderDecorator(dgv); dgv.列。添加

我正在写C。我使用从下面链接复制的这段代码向
DataGridView
显示多层列标题

我成功地显示了多层列标题本身,但无法在列标题下添加行。相反,我将添加的行显示在除多层列标题外自动创建的列标题中

private void Form1\u加载(对象发送方,事件参数e)
{
DataGridView dgv=DataGridView_-syukei;
StackedHeaderDecorator objREnderer=新StackedHeaderDecorator(dgv);
dgv.列。添加(“名称”、“a.Name”);
dgv.列。添加(“1”、“a.Id”);
List testClasses=new List();
TestClass testClass1=新的TestClass();
testClass1.Id=1;
testClass1.Name=“John”;
TestClass testClass2=新的TestClass();
testClass2.Id=2;
testClass2.Name=“Mike”;
添加(testClass1);
添加(testClass2);
dgv.DataSource=testClasses;
}
类TestClass
{
公共字符串名称{get;set;}
公共int Id{get;set;}
}

添加
AutoGenerateColumns=false
DataPropertyName
解决了这个问题

    private void Form1_Load(object sender, EventArgs e)
    {
        DataGridView dgv = dataGridView_syukei;
        dgv.AutoGenerateColumns = false;
        StackedHeaderDecorator objREnderer = new StackedHeaderDecorator(dgv);

        DataGridViewColumn dataGridViewColumn_Name = new DataGridViewColumn();
        dataGridViewColumn_Name.HeaderText = "a.Name";
        dataGridViewColumn_Name.DataPropertyName = "Name";
        dataGridViewColumn_Name.CellTemplate = new DataGridViewTextBoxCell();
        dgv.Columns.Add(dataGridViewColumn_Name);

        DataGridViewColumn dataGridViewColumn_Id = new DataGridViewColumn();
        dataGridViewColumn_Id.HeaderText = "a.Id";
        dataGridViewColumn_Id.DataPropertyName = "Id";
        dataGridViewColumn_Id.CellTemplate = new DataGridViewTextBoxCell();
        dgv.Columns.Add(dataGridViewColumn_Id);

        List<TestClass> testClasses = new List<TestClass>();
        TestClass testClass1 = new TestClass();
        testClass1.Id = 1;
        testClass1.Name = "John";
        TestClass testClass2 = new TestClass();
        testClass2.Id = 2;
        testClass2.Name = "Mike";
        testClasses.Add(testClass1);
        testClasses.Add(testClass2);

        dgv.DataSource = testClasses;
    }
private void Form1\u加载(对象发送方,事件参数e)
{
DataGridView dgv=DataGridView_-syukei;
dgv.AutoGenerateColumns=false;
StackedHeaderDecorator objREnderer=新StackedHeaderDecorator(dgv);
DataGridViewColumn DataGridViewColumn_Name=新建DataGridViewColumn();
dataGridViewColumn_Name.HeaderText=“a.Name”;
dataGridViewColumn_Name.DataPropertyName=“Name”;
dataGridViewColumn_Name.CellTemplate=新DataGridViewTextBoxCell();
dgv.Columns.Add(dataGridViewColumn_名称);
DataGridViewColumn DataGridViewColumn_Id=新DataGridViewColumn();
dataGridViewColumn_Id.HeaderText=“a.Id”;
dataGridViewColumn_Id.DataPropertyName=“Id”;
dataGridViewColumn_Id.CellTemplate=新DataGridViewTextBoxCell();
dgv.Columns.Add(dataGridViewColumn_Id);
List testClasses=new List();
TestClass testClass1=新的TestClass();
testClass1.Id=1;
testClass1.Name=“John”;
TestClass testClass2=新的TestClass();
testClass2.Id=2;
testClass2.Name=“Mike”;
添加(testClass1);
添加(testClass2);
dgv.DataSource=testClasses;
}

这是winforms吗?如果没有,你使用的是什么UI框架?是的,是windforms。我不明白你的问题是什么。您希望用户能够将新行添加到网格。。。“取而代之的是,我将添加的行显示在除多层列标题外自动创建的列标题中。”?如果已有列,则将其
DataPropertyName
设置为与数据源的属性/列匹配。否则,控件将创建新列(使用
AutoGenerateColumns=true
)。@Jimi谢谢。你的建议解决了问题。
    private void Form1_Load(object sender, EventArgs e)
    {
        DataGridView dgv = dataGridView_syukei;
        dgv.AutoGenerateColumns = false;
        StackedHeaderDecorator objREnderer = new StackedHeaderDecorator(dgv);

        DataGridViewColumn dataGridViewColumn_Name = new DataGridViewColumn();
        dataGridViewColumn_Name.HeaderText = "a.Name";
        dataGridViewColumn_Name.DataPropertyName = "Name";
        dataGridViewColumn_Name.CellTemplate = new DataGridViewTextBoxCell();
        dgv.Columns.Add(dataGridViewColumn_Name);

        DataGridViewColumn dataGridViewColumn_Id = new DataGridViewColumn();
        dataGridViewColumn_Id.HeaderText = "a.Id";
        dataGridViewColumn_Id.DataPropertyName = "Id";
        dataGridViewColumn_Id.CellTemplate = new DataGridViewTextBoxCell();
        dgv.Columns.Add(dataGridViewColumn_Id);

        List<TestClass> testClasses = new List<TestClass>();
        TestClass testClass1 = new TestClass();
        testClass1.Id = 1;
        testClass1.Name = "John";
        TestClass testClass2 = new TestClass();
        testClass2.Id = 2;
        testClass2.Name = "Mike";
        testClasses.Add(testClass1);
        testClasses.Add(testClass2);

        dgv.DataSource = testClasses;
    }