我查看了其他关于DataGridView SelectionMode的帖子,但没有发现任何人有同样的问题。仅在.NET 4.7.2上发生当我选择一行时,我所单击的列的标题也会被选中,如下所示:
.NET 4.7.2
j8ag8udp1#
将以下两行代码添加到构造函数中(第一行也可以在设计器中设置):
GridContatos.EnableHeadersVisualStyles = false; GridContatos.ColumnHeadersDefaultCellStyle.SelectionBackColor = GridContatos.ColumnHeadersDefaultCellStyle.BackColor;
bq8i3lrv2#
所选答案确实100%有效,但我有一些表单,而且随着应用程序的增长还会添加更多表单,因此我创建了自己的自定义DataGridView,这样就不必在每个新表单中添加此行。1.创建应用程序要使用的自定义DataGridView。1.在构造函数中,可以处理DataGridView的ColumnStateChanged事件,并将HeaderCell的Style重置为默认背景值:例如(我实际上已经有一个自定义网格的其他原因,如搜索过滤):
public class DataGridViewCustom : DataGridView { public DataGridViewSearch() : base() { InitializeComponent(); this.ColumnStateChanged += DataGridViewCustom_ColumnStateChanged; } private void DataGridViewCustom_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e) { DataGridView dataGridView = (DataGridView)sender; //Only update for full row selection mode. if (dataGridView.SelectionMode == DataGridViewSelectionMode.FullRowSelect) { e.Column.HeaderCell.Style.SelectionBackColor = dataGridView.ColumnHeadersDefaultCellStyle.BackColor; } } }
2条答案
按热度按时间j8ag8udp1#
将以下两行代码添加到构造函数中(第一行也可以在设计器中设置):
bq8i3lrv2#
所选答案确实100%有效,但我有一些表单,而且随着应用程序的增长还会添加更多表单,因此我创建了自己的自定义DataGridView,这样就不必在每个新表单中添加此行。
1.创建应用程序要使用的自定义DataGridView。
1.在构造函数中,可以处理DataGridView的ColumnStateChanged事件,并将HeaderCell的Style重置为默认背景值:
例如(我实际上已经有一个自定义网格的其他原因,如搜索过滤):