DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DataGridViewの指定した列や行を固定してスクロールされないようにする

注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。

列を固定する

DataGridViewColumn.FrozenプロパティをTrueにすることにより、その列より左側のすべての列が、横方向のスクロールでスクロールされずに固定されるようになります。重要な列を常に表示させておきたいときなどに便利です。

2番目の列より左側を固定する例を以下に示します。このようにすると、左側の2つの列が固定され、水平方向のスクロールではスクロールされず、3番目以降の列だけがスクロールされるようになります。

VB.NET
コードを隠すコードを選択
'DataGridView1の左側2列を固定する
DataGridView1.Columns(1).Frozen = True
C#
コードを隠すコードを選択
//DataGridView1の左側2列を固定する
DataGridView1.Columns[1].Frozen = true;

DataGridViewRow.Frozenプロパティ

ただし、DataGridView.AllowUserToOrderColumnsプロパティがTrueで列の位置を変更できる時は、固定された列を固定されていない列に移動できません(逆も同じです)。

行を固定する

DataGridViewRow.FrozenプロパティをTrueにすることにより、その行より上のすべての行が、縦方向のスクロールでスクロールされずに固定されるようになります。

上部の3行を固定する例を以下に示します。このようにすると、先頭の3行が固定され、垂直方向のスクロールではスクロールされず、4番目以降の行だけがスクロールされるようになります。

VB.NET
コードを隠すコードを選択
'DataGridView1の上部2行を固定する
DataGridView1.Rows(2).Frozen = True
C#
コードを隠すコードを選択
//DataGridView1の上部2行を固定する
DataGridView1.Rows[2].Frozen = true;

DataGridViewRow.Frozenプロパティ

指定されたセルが固定されているか調べる

DataGridViewCell.Frozenプロパティにより、そのセルが固定されているかを調べることができます。

ヘルプには、「行または列の Frozen プロパティが true に設定されている場合、セルの Frozen プロパティも true となります。」とありますが、私が試した限りでは、行と列の両方のFrozenプロパティがTrueに設定されていないとセルのFrozenプロパティはTrueにならないようでした。

VB.NET
コードを隠すコードを選択
If DataGridView1(0, 0).Frozen Then
    Console.WriteLine("(0, 0)のセルは固定されています。")
End If
C#
コードを隠すコードを選択
if (DataGridView1[0, 0].Frozen)
    Console.WriteLine("(0, 0)のセルは固定されています。");

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。