DataGridView:如何选择整个列并取消选择其他所有列?

时间:2009-12-31 21:34:47

标签: c# winforms datagridview

我一直试图找出如何使用'鼠标右键单击+菜单+选择此列'选择列下的所有单元格...

MSDN没有多大帮助...

当我尝试更改选择模式时出现此错误:

DataGridView control's SelectionMode cannot be set to FullColumnSelect while it has a   column with SortMode set to DataGridViewColumnSortMode.Automatic.

谢谢, Y_Y

4 个答案:

答案 0 :(得分:9)

很抱歉花了这么长时间 - 我想在我回答之前进行测试,所以我把它放到Visual Studio中进行测试。

我必须在我的网站上这样做才能让它发挥作用:

foreach (DataGridViewColumn c in dataGridView1.Columns)
{
   c.SortMode = DataGridViewColumnSortMode.NotSortable;
   c.Selected = false;
}
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect;
dataGridView1.Columns[0].Selected = true;

答案 1 :(得分:5)

循环遍历列中的单元格并将其Selected属性设置为true 这听起来很糟糕,但我相信这是选择整个列并保持自动排序的唯一方法。

例如:

grid.ClearSelection();
for(int r = 0; r < grid.RowCount; r++)
    grid[columnIndex, r].Selected = true;

答案 2 :(得分:2)

你需要3件事。

  1. 清除所有选定的行和单元格。
  2. 将每列的排序模式删除为Not sortable。默认点击事件是排序,现在将被选中。
  3. 将选择模式设置为列。
  4. 最后,您可以选择第一列向用户显示选择模式。 这只需要做一次。第一次加载表单或datagridview时。

    // Clear all selected cells or rows in the DGV.
    dataGridView1.ClearSelection();
    
    // Make every column not sortable.
    for (int i=0; i < dataGridView1.Columns.Count; i++)
       dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; 
    
    // Set selection mode to Column.
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect; 
    
    // In case you want the first column selected. 
    if (dataGridView1.Columns.Count > 0 )  // Check if you have at least one column.
        dataGridView1.Columns[0].Selected = true;
    

答案 3 :(得分:0)

我在使用拖放界面从WPF开始时遇到此错误,而没有进行任何手动编码。查看datagrid的属性将提供一种选择如下项的方法: enter image description here

但是尝试更改类型为“列标题选择”或“列选择”会导致您提到的错误。

因此,解决方法是通过右键单击网格并转到 Edit Columns 。在这里,所有列及其SortingMode均可更改。将它们全部更改为NotSortable。

enter image description here