public DataGridViewMovedRows(DataGridViewSelectedRowCollection rows, DataGridView source) { if (rows == null) throw new ArgumentNullException(nameof(rows)); modifiedRows = rows.Cast<DataGridViewRow>().OrderBy(x => x.Index).ToArray(); SourceRows = new ReadOnlyCollection<DataGridViewRow>((DataGridViewRow[])modifiedRows.Clone()); Source = source; }