我遇到了一个问题,根据数据表值在DataGridView(DGV)中以编程方式进行多项选择 . 我有一个带有一列“ID”的表,我需要将这些值传递给另一个带有DGV的表格进行编辑,ID也是第一个DGV列,即对于表中的每个ID,应该选择适当的DGV行 . 我可以循环遍历表格并且DGV很好,但是即使DGV属性MultiSelect = true也只选择了最后一个值...当我手动使用表格时,多个选择工作正常 .
foreach(DataRow dtrow in dt.Rows)
{
string Selection = dtrow["ID"].ToString();
foreach(DataGridViewRow DGVrow in dgview.Rows)
{
if (DGVrow.Cells[0].Value.ToString().Equals(Selection))
{
dgview.CurrentCell = DGVrow.Cells[0];
int cellInx = dgview.CurrentCell.RowIndex;
dgview.Rows[cellInx].Selected = true;
break;
}
}
}
1 回答
我正在回答我自己的问题,因为我认为这不可能在表单加载上 . 我的应用程序有一个用于向项目添加选择的表单 . 当用户想要“编辑”项目时,我需要调用此表单并进行所有先前的选择,以便用户可以添加/删除 . 当使用启用了多选的DataGridView(DGV)时,在运行时,您可以'ctl-click'并选择多个项...实际上我正在尝试在代码中重新创建此行为,在'edit'中加载表单模式 . 初始化窗体后,我有一个从OleDb表加载DGV的方法,为了测试它,我尝试在加载方法调用之后添加以下行,并作为方法调用的最后几行:
显然,在表单加载时,我期待前3行为'selected',但是再次没有't happen. However, I remembered a separate issue, I could never get the DGV to load without the first line selected by default ... so I put in a '刷新' button, that simply calls the '加载'方法...最后一行是:
DGV1.Rows[0].Selected = False;
使用刷新按钮加载DGV而不选择第一行 . 我很好奇,如果这是一个类似的情况,所以当我将这3行添加到加载方法的末尾时,表单加载没有任何反应......但是...当我按下'Refresh'按钮时,前3行是'selected' .我已经研究了这个超过3天,并从DataGridView项目经理(2006)发现了以下内容:https://social.msdn.microsoft.com/Forums/windows/en-US/cf351d44-4a9a-4c80-8d52-4fb349847908/multiple-select-is-not-working-for-datagridview?forum=winformsdatacontrols
所以我的计划是按照建议重建DGV以使用复选框 . 我只想把它放在那里以获取一般信息和/或如果有人有更好的想法 . 谢谢