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

DataGridViewの行をユーザーが並び替えできないようにする

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

通常(DataGridViewTextBoxColumn列)は、DataGridViewの列ヘッダーをクリックすることにより、ユーザーが並び替えを行うことができますが、これをできないようにする方法を紹介します。

ユーザーの並び替えを禁止するには、DataGridViewColumn.SortModeプロパティをDataGridViewColumnSortMode.ProgrammaticかNotSortableにします。Programmaticにすると、DataGridView.Sortメソッドで並び替えを行った時に、列ヘッダーの右側に昇順、降順のどちらで並び替えが行われているかを示す矢印(並び替えグリフ、ソートグリフ)が表示されます。NotSortableでは、ソートグリフは表示されません。つまり、ユーザーが並び替えることはできないが、プログラムで並び替えを行う場合はProgrammaticを、プログラムでも並び替えを行わない場合はNotSortableを指定します。

補足:ProgrammaticとNotSortableの違いはこれ以外にも、ヘッダーにマウスポイントがホバーした時に見た目が変わるか変わらないかや、ヘッダーをクリックした時に見た目が変わるか変わらないかなどがあります。

例えば、全ての列の並び替えを禁止するには、次のようにします。

VB.NET
コードを隠すコードを選択
'並び替えができないようにする
For Each c As DataGridViewColumn In DataGridView1.Columns
    c.SortMode = DataGridViewColumnSortMode.NotSortable
Next c
C#
コードを隠すコードを選択
//並び替えができないようにする
foreach (DataGridViewColumn c in DataGridView1.Columns)
    c.SortMode = DataGridViewColumnSortMode.NotSortable;

プログラムで並び替えを行う方法は、こちらで紹介します。

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

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