DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
コレクション内の指定した位置に DataGridViewRow オブジェクトを挿入します。
public:
virtual void InsertRange(int rowIndex, ... cli::array <System::Windows::Forms::DataGridViewRow ^> ^ dataGridViewRows);
public virtual void InsertRange (int rowIndex, params System.Windows.Forms.DataGridViewRow[] dataGridViewRows);
abstract member InsertRange : int * System.Windows.Forms.DataGridViewRow[] -> unit
override this.InsertRange : int * System.Windows.Forms.DataGridViewRow[] -> unit
Public Overridable Sub InsertRange (rowIndex As Integer, ParamArray dataGridViewRows As DataGridViewRow())
パラメーター
- rowIndex
- Int32
行を挿入する位置。
- dataGridViewRows
- DataGridViewRow[]
DataGridViewRowCollection に追加する DataGridViewRow オブジェクトの配列。
例外
dataGridViewRows
が null
です。
rowIndex
が、ゼロ未満か、コレクションの行数を超えています。
dataGridViewRows
に含まれるのは 1 行のみであり、そこに含まれる行に、コントロール内の列数よりも多くのセルが含まれています。
関連付けられている DataGridView コントロールによって、新しい行の追加を一時的に妨げる次の操作のいずれかが実行されています。
コントロール内のすべてのセルを選択します。
選択範囲をクリアします。
- または -
このメソッドは、次のいずれかの DataGridView イベントのハンドラーから呼び出されています。
- または -
rowIndex
がコレクション内の行数と等しく、また AllowUserToAddRows が true
です。
- または -
DataGridView の DataSource プロパティが null
ではありません。
- または -
dataGridViewRows
配列の中の少なくとも 1 つのエントリが null
です。
- または -
DataGridView に列がありません。
- または -
dataGridViewRows
配列の中の少なくとも 1 つの行の DataGridView プロパティ値が null
ではありません。
- または -
dataGridViewRows
配列の中の少なくとも 1 つの行の Selected プロパティ値が true
です。
- または -
dataGridViewRows
配列の中に 2 つ以上の同一の行があります。
- または -
dataGridViewRows
配列の中の少なくとも 1 つの行に、コントロール内の対応する列の型と互換性のない型の 1 つ以上のセルが含まれています。
- または -
dataGridViewRows
配列の中の少なくとも 1 つの行に、コントロール内の列数よりも多くのセルが含まれています。
- または -
この操作を行うと、固定されていない行の後に固定されている行が挿入されるか、または固定されている行の前に固定されていない行が挿入されます。
例
次のコード例では、 メソッドを使用 InsertRange して、選択した行の前に行を挿入し、「解説」セクションに示されているバグを回避する方法を示します。
// 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;
}
}
' 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
注釈
メソッドは InsertRange 、可能であれば、 に共有行を DataGridViewRowCollection追加します。 それ以外の場合、新しい行は共有解除されます。 詳細については、「 Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。
コントロール内の行は、新しい行が追加されるときに自動的に並べ替えされません。 新しい行を正しい位置に並べ替えるには、イベント ハンドラーで メソッドをDataGridView.RowsAdded呼び出DataGridView.Sortします。 イベント ハンドラーで メソッドを DataGridView.Sort 呼び出して、ユーザーがセルを CellValueChanged 変更したときに行を並べ替えることもできます。
重要
バグのため、 メソッドは、 InsertRange インデックスがより大きい rowIndex
行が選択されている場合、アプリケーションの応答を停止します。 このバグを回避するには、このメソッドを呼び出す前にこれらの行の選択を取り消し、後で行を再選択する必要があります。 詳細については、このトピックのコード例を参照してください。
適用対象
こちらもご覧ください
.NET