我的表单中有一个DataGridView。功能如下。
我已将multiselect设置为true。我可以使用鼠标选择多个单元格。但我想以编程方式进行。
答案 0 :(得分:6)
如果您对DataGridView
进行多选真,那么您可以遍历网格并将所需的行设置为Selected
(同样,您的dataGridView.SelectionMode
应为FullRowSelect
)
dataGridView.Rows[0].Selected = true;//determine index value from your logic
dataGridView.Rows[5].Selected = true;
修改
而不是行选择然后您可以尝试此逻辑,订阅rowheaderclick事件,其中您将获得单击它的行索引,现在循环遍历列并将每个单元格设置为选定(类似于上面)
对于HeaderClick事件,您可以使用列索引,现在按行循环并设置选择的行索引。
datagridview1[columnindex, rowindex].Selected = true
对于行,rowindex将被固定,而对于列选择,columnindex将是固定的。
希望这会对你有所帮助。
答案 1 :(得分:0)
在尝试选择(多个)项目之前,允许DataGridView完成加载其数据非常重要。您可以在DataBindingComplete事件处理程序中执行此操作。 这是一个有效的例子:
List<int> items = new List<int>() { 2, 4 };
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.ClearSelection();
int lastItem = 0; // Save the last match to scroll to it later
bool cellSelected = false;
for (int i = dataGridView1.Rows.Count - 1; i >= 0; i--)
{
if (items.Contains((int)dataGridView1.Rows[i].Cells[0].Value))
{
lastItem = i;
dataGridView1.Rows[i].Selected = true;
if (!cellSelected) // gotta select only one cell
{
dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];
cellSelected = true;
}
}
}
dataGridView1.FirstDisplayedScrollingRowIndex = lastItem;
}