C# 将datagridview行移动到另一个datagridview
我已经看过了这类问题的其他答案,到目前为止,没有任何一个答案是有效的 我有一个C# 将datagridview行移动到另一个datagridview,c#,datagridview,move,C#,Datagridview,Move,我已经看过了这类问题的其他答案,到目前为止,没有任何一个答案是有效的 我有一个foreach循环,它应该将源datagridview中的行添加到目标datagridview中,然后从源中删除该行 无效操作异常为:提供的行已属于DataGridView控件。 我也无法让…Rows.Copy()工作。有什么想法吗 foreach (DataGridViewRow selRow in fromDataGridView.SelectedRows) { toDataGridView.Rows.Ad
foreach
循环,它应该将源datagridview
中的行添加到目标datagridview
中,然后从源中删除该行
无效操作异常为:提供的行已属于DataGridView控件。
我也无法让…Rows.Copy()
工作。有什么想法吗
foreach (DataGridViewRow selRow in fromDataGridView.SelectedRows)
{
toDataGridView.Rows.Add(selRow);
fromDataGridView.Rows.Remove(selRow);
}
在将该行添加到
toDataGridView
之前,需要从DataGridView的中删除该行
但是您在foreach
循环中修改集合-这不起作用
解决方法是复制集合以在foreach
中使用
试试这个:
foreach (DataGridViewRow selRow in fromDataGridView.SelectedRows.OfType<DataGridViewRow>().ToArray())
{
fromDataGridView.Rows.Remove(selRow);
toDataGridView.Rows.Add(selRow);
}
foreach(datagridview.SelectedRows.OfType().ToArray()中的DataGridViewRow selRow)
{
fromDataGridView.Rows.Remove(selRow);
toDataGridView.Rows.Add(selRow);
}
下面是一个您可以做或尝试的示例
当一行被删除时,行数也会减少,因此,如果将代码放入for循环并反向运行,它将正常工作。请看:
for (int selRow = dataGridView1.Rows.Count -1; selRow >= 0 ; selRow--)
{
toDataGridView.Rows.Add(selRow);
fromDataGridView.Rows.Remove(selRow);
}
如果存在BindingSource
,则无法将新行直接添加到DataGridView
您应该将行添加到第二个视图的BindingSource
,并让它将行添加到其网格中
我已经在一个工作解决方案中测试了以下代码
var selectedRows = dataGridView1.SelectedRows;
int count = dataGridView1.SelectedRows.Count;
for (int i = 0; i < count; i++)
{
bindingSource2.Add(bindingSource1[selectedRows[i].Index]);
dataGridView1.Rows.Remove(selectedRows[i]);
}
var selectedRows=dataGridView1.selectedRows;
int count=dataGridView1.SelectedRows.count;
for(int i=0;i
您需要在for循环而不是foreach循环中执行此操作,如果有意义,您需要按相反的顺序进行计数。错误1'System.Windows.Forms.DataGridViewSelectedRowCollection'不包含'ToArray'的定义,并且没有接受第一个类型参数的扩展方法'ToArray'可以找到“System.Windows.Forms.DataGridViewSelectedRowCollection”(是否缺少using指令或程序集引用?
我确实使用System.Collections添加了代码>已更新,您需要一个使用System.Linq
@RoyGoode:我有这样的错误:当控件是数据绑定时,无法以编程方式将行添加到DataGridView的行集合。
在行中toDataGridView.Rows.Add(selRow)代码>@VănLộc听起来像是将DataGridView的数据绑定到了一个对象,比如DataSet、DataTable、List或Dictionary。执行此操作时,必须通过操纵BindingSource中指定的源对象来控制DataGridView中的行。这在添加
行中失败。“要创建的副本数必须严格为正。”参数为count。这是因为selRow必须大于0。我如何设置/引用/更改两个DataGridView的绑定源?@ikathegreat我无法从上述评论中了解您的目的。您的电网是否连接到BindingSource
?