winforms 如何在datagridview中禁用选择高亮显示(蓝色)

y53ybaqx  于 2023-02-09  发布在  其他
关注(0)|答案(4)|浏览(338)

我有一个datagridview,它的唯一目的是显示数据库中的信息。出于某种原因,我还添加了额外的列,每一行都有“查看”链接。所以基本上datagridView的目的只是让用户单击“查看”链接。仅此而已。这就是为什么我不想要“突出显示”的原因。
我一直在寻找这个答案,但我仍然没有找到正确的答案。这是可能的还是不可能的?

vd2z7a6w

vd2z7a6w1#

这就是你的做法:

dataGridView1.Rows.Add("a1");//Just for testing
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.White;
dataGridView1.DefaultCellStyle.SelectionForeColor = Color.Black; //This is the text color

如果默认的话,你可以选择任何其他颜色,但是只需要把SelectionBackColor设置为datagrid的背景色。

gz5pxeao

gz5pxeao2#

我发现的最简单的方法是:

dataGridViewCellStyle.SelectionBackColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle.SelectionForeColor = System.Drawing.Color.Transparent;
erhoui1w

erhoui1w3#

删除选择显示的最简单方法是设置选择颜色以匹配单元格背景颜色:

dataGridView1.DefaultCellStyle.SelectionBackColor
  = dataGridView1.DefaultCellStyle.BackColor;

引用现有的背景颜色意味着您没有硬编码颜色。

jmo0nnb3

jmo0nnb34#

您可以尝试以下解决方案,这样就不必在每个新屏幕上设置选区背景色。
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;
      }
    }
  }

相关问题