如何在DataGridView中选择多个单元格

时间:2011-09-26 05:01:28

标签: .net datagridview cell

我的表单中有一个DataGridView。功能如下。

  • 点击标题可选择整列。
  • 单击列标题以外的任何单元格将选择整行

我已将multiselect设置为true。我可以使用鼠标选择多个单元格。但我想以编程方式进行。

2 个答案:

答案 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;
    }