

"DataGridView – Stacked Header"ものを使っています。  
この[サイト(codeproject.com)](https://www.codeproject.com/Articles/474418/DataGridViewplus-
e-plusStackedplusHeader)で紹介されていたものです。

列固定なしではうまく動いたのですが、列固定すると正しく動きません。階層構造になった列ヘッダーの一番上の階層の部分が列固定しているのにも関わらずスクロールしてしまいます。

これを直す方法をご存知でしたらご教示いただけませんでしょうか？  
よろしくお願いいたします。

[code]

    private void Form1_Load(object sender, EventArgs e)
    {
        this.datatable = new DataTable();
    
        this.datatable.Columns.Add("a");
        this.datatable.Columns.Add("b");
        this.datatable.Columns.Add("c");
        this.datatable.Columns.Add("d");
        this.datatable.Columns.Add("e");
        this.datatable.Columns.Add("f");
    
        this.datatable.Rows.Add(new object[] { 1, 2, 3, 4, 5, 6 });
        this.datatable.Rows.Add(new object[] { 11, 22, 33, 44, 55, 66 });
    
        for (int i = 0; i < this.datatable.Columns.Count; i++)
        {
            string colName = this.datatable.Columns[i].ColumnName;
    
            DataGridViewColumn dataGridViewColumn = new DataGridViewTextBoxColumn();
            dataGridViewColumn.DataPropertyName = colName;
    
            string groupName;
    
            if (i <= 2)
            {
                groupName = "first";
                dataGridViewColumn.Frozen = true;
            }
            else
            {
                groupName = "second";
                dataGridViewColumn.Frozen = false;
            }
    
            dataGridViewColumn.HeaderText = groupName + "." + colName;
    
            this.dataGridView1.Columns.Add(dataGridViewColumn);
        }
    
        this.dataGridView1.DataSource = this.datatable;
    
        StackedHeaderDecorator objREnderer =
            new StackedHeaderDecorator(this.dataGridView1);
    }
    
[/code]

スクロールする前：

[![スクロールする前](https://i.stack.imgur.com/aVUKv.png)](https://i.stack.imgur.com/aVUKv.png)

スクロールした後：  
一番上の列ヘッダーがスクロールしてしまっています。

[![スクロールした後](https://i.stack.imgur.com/RymRp.png)](https://i.stack.imgur.com/RymRp.png)


CC BY-SA 4.0
2021-05-05T03:54:17.403
75674
2021-05-05T10:58:08.987
2021-05-05T10:58:08.987
2238
43941
question
c# datagridview
“DataGridView – Stacked Header”の一番上のヘッダーが列固定されずスクロールしてしまう。


参照記事の`StackedHeader`ライブラリ自身が、列表示の固定を行う`Frozen`設定を考慮していないものと思われます。

例えばサンプルプログラム`Test.cs`で初期表示される列をデザイナーで`Frozen`プロパティの`true`設定を行っても、質問と同様に一番下のヘッダーだけが固定されていて、それ以外はスクロールします。

おそらくライブラリ各ソースの以下のあたりに`Frozen`関連の情報と設定時の対処を追加する必要があるでしょう。

Header.cs

  * Headerクラスのプロパティに`Frozen`関連情報無し
  * Measure()

StackedHeaderDecorator.cs

  * RenderColumnHeaders()
  * Render()

StackedHeaderGenerator.cs

  * GenerateStackedHeader()


CC BY-SA 4.0
2021-05-05T09:01:54.553
75682
2021-05-05T09:01:54.553
26370
75674
answer