DataGridViewRowCollection.InsertRange メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > DataGridViewRowCollection.InsertRange メソッドの意味・解説 

DataGridViewRowCollection.InsertRange メソッド

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

コレクション内の指定した位置に DataGridViewRow オブジェクトを挿入します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Overridable Sub InsertRange
 ( _
    rowIndex As Integer, _
    ParamArray dataGridViewRows As DataGridViewRow()
 _
)
Dim instance As DataGridViewRowCollection
Dim rowIndex As Integer
Dim dataGridViewRows As DataGridViewRow()

instance.InsertRange(rowIndex, dataGridViewRows)
public virtual void InsertRange (
    int rowIndex,
    params DataGridViewRow[] dataGridViewRows
)
public:
virtual void InsertRange (
    int rowIndex, 
    ... array<DataGridViewRow^>^ dataGridViewRows
)
public void InsertRange (
    int rowIndex, 
    DataGridViewRow[] dataGridViewRows
)
public function InsertRange (
    rowIndex : int, 
    ... dataGridViewRows : DataGridViewRow[]
)

パラメータ

rowIndex

行を挿入する位置。

dataGridViewRows

DataGridViewRowCollection に追加する DataGridViewRow オブジェクトの配列。

例外例外
例外の種類条件

ArgumentNullException

dataGridViewRows が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

rowIndex が 0 未満か、コレクションに含まれる行数を上回っています。

ArgumentException

dataGridViewRows が 1 つだけ行を格納し、格納されている行にコントロールの列数を超える数のセルがあります。

InvalidOperationException

関連付けられた DataGridView コントロールが次のいずれかのアクションを実行しているため、一時的に新しい行が追加できない状態にあります。

または

このメソッドが、次のいずれかに該当する DataGridView イベントのハンドラから呼び出されています。

  • CellEnter

  • CellLeave

  • CellValidating

  • CellValidated

  • RowEnter

  • RowLeave

  • RowValidated

  • RowValidating

または

rowIndex がコレクションに含まれる行数と同じであり、DataGridView.AllowUserToAddRows が true です。

または

DataGridView の DataSource プロパティが null 参照 (Visual Basic では Nothing) ではありません。

または

dataGridViewRows 配列内の最低 1 つのエントリが null 参照 (Visual Basic では Nothing) です。

または

DataGridView に列がありません。

または

dataGridViewRows 配列の最低 1 つの行の DataGridView プロパティに null 参照 (Visual Basic では Nothing) 以外の値が設定されています。

または

dataGridViewRows 配列の最低 1 つの行の Selected プロパティ値が true に設定されています。

または

dataGridViewRows 配列の 2 つ以上の行が同じです。

または

dataGridViewRows 配列の最低 1 つの行に、コントロール内の対応する列の型と互換性のない型のセルが 1 つ以上含まれています。

または

dataGridViewRows 配列の最低 1 つの行に、コントロールの列数を超える数のセルがあります。

または

この操作を実行すると、固定されていない行の後に固定された行が挿入されるか、または固定された行の前に固定されていない行が挿入されます。

解説解説

InsertRange メソッドは、可能な場合は、DataGridViewRowCollection に共有行を追加します。共有行を追加できない場合、新しい行は非共有となります。詳細については、「Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。

新しい行の追加時にコントロール内の行が自動的に並べ替えられることはありません。新しい行を並べ替えた上で正しい位置に挿入するには、DataGridView.RowsAdded イベント ハンドラで System.Windows.Forms.DataGridView.Sort メソッドを呼び出します。また、CellValueChanged イベント ハンドラで System.Windows.Forms.DataGridView.Sort メソッドを呼び出すことにより、セルがユーザーによって変更されたときに行を並べ替えることもできます。

メモ重要 :

rowIndex よりも大きいインデックスを持つ行を選択した場合、InsertRange メソッドのバグが原因で、アプリケーションが応答停止になります。このバグを回避するには、このメソッドを呼び出す前に行の選択をキャンセルし、メソッドを呼び出した後で行を再選択する必要があります。詳細については、このトピックのコード例を参照してください。

使用例使用例

InsertRange メソッドを使用して、選択した行の前に行を挿入し、「解説」セクションに記載されているバグを回避する方法を次のコード例に示します。

' Workaround for bug that prevents DataGridViewRowCollection.InsertRange
' from working when any rows before the insertion index are selected.
Private Sub InsertRows(ByVal
 index As Integer, _
    ByVal ParamArray rows As
 DataGridViewRow())

    Dim selectedIndexes As New
 System.Collections.Generic.List(Of Integer)

    For Each row As DataGridViewRow
 In dataGridView1.SelectedRows
        If row.Index >= index Then
            selectedIndexes.Add(row.Index)
            row.Selected = False
        End If
    Next row

    dataGridView1.Rows.InsertRange(index, rows)

    For Each selectedIndex As
 Integer In selectedIndexes
        dataGridView1.Rows(selectedIndex).Selected = True
    Next selectedIndex

End Sub
// Workaround for bug that prevents DataGridViewRowCollection.InsertRange
// from working when any rows before the insertion index are selected.
private void InsertRows(int
 index, params DataGridViewRow[] rows)
{
    System.Collections.Generic.List<int> selectedIndexes
 =
        new System.Collections.Generic.List<int>();
    foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    {
        if (row.Index >= index)
        {
            selectedIndexes.Add(row.Index);
            row.Selected = false;
        }
    }
    dataGridView1.Rows.InsertRange(index, rows);
    foreach (int selectedIndex in
 selectedIndexes)
    {
        dataGridView1.Rows[selectedIndex].Selected = true;
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DataGridViewRowCollection クラス
DataGridViewRowCollection メンバ
System.Windows.Forms 名前空間
DataGridView クラス
DataGridViewRow クラス
AddRange



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「DataGridViewRowCollection.InsertRange メソッド」の関連用語

DataGridViewRowCollection.InsertRange メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DataGridViewRowCollection.InsertRange メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS