删除DataGridView列排序,但保持鼠标悬停效果

时间:2017-06-30 16:10:58

标签: c# datagridview

我有一个DataGridView我使用这个LINQ语句禁用了列排序:

((DataGridView)sender).Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);

到目前为止一切都很好。但是,每当我将鼠标悬停在任何列标题上时,标题就不再像是悬停在它们上面了。

有没有办法禁用列排序,同时还能保持能够查看您悬停在哪个列上?

1 个答案:

答案 0 :(得分:2)

DataGridViewColumnSortMode成员的MSDN文档定义:

  • NotSortable

      

    该列只能以编程方式排序,但不能用于排序,因此列标题不包含排序标志符号的空间。

  • Programmatic

      

    该列只能以编程方式排序,列标题将包含排序标志符号的空间。

从技术上讲,这意味着两个选项为用户禁用列排序。除了意图之外,两者之间的唯一区别是视觉线索,I.E。排序标志符号和悬停突出显示。

因此,如果您希望排序外观没有任何排序,请设置以下模式,只需不进行任何程序化排序

DataGridViewColumn.SortMode = DataGridViewColumnSortMode.Programmatic;

Sortable column vs non-sortable column