如何隐藏DataGridView控件上的当前单元格位置?

问题描述:

我有一个DataGridView控件,允许多行选择。我遇到的问题是显示选择的当前位置(请参阅下图)。我想不显示当前单元格位置。那可能吗?如何隐藏DataGridView控件上的当前单元格位置?

enter image description here

我想它看起来像,而不是下面...

enter image description here

+0

相关:[如何在不按Tab键的情况下强制DataGridView当前单元格轮廓](https://*.com/q/35282436/3773066)。我的解决方案应该适合你,只需将'ShowFocus'设置为'false'即可。 – OhBeWise

+0

我花了很长时间才将所有从一个DataGridView设置到另一个DataGridView的内容复制到另一个DataGridView中,但这完全按照我的意愿工作。感谢您为简单的微软做了一个艰苦的过程。 - OhBeWise,添加一个答案获得黄金。 ;) –

DataGridView导出类并覆盖ShowFocusCues属性。

  • 返回True显示焦点矩形。
  • 返回False隐藏焦点矩形。
  • 返回base.ShowFocusCues保持默认行为。

您还可以公开属性来动态更改它。

public class DataGridViewFocused : DataGridView 
{ 
    public bool? ShowFocus { get; set; } 

    protected override bool ShowFocusCues 
    { 
     get 
     { 
      return this.ShowFocus.HasValue? this.ShowFocus.Value : base.ShowFocusCues; 
     } 
    } 
} 

它添加到您的项目,以取代现有DataGridView可以像浏览到您的Form.Designer.cs文件,并替换以下简单:

public System.Windows.Forms.DataGridView dataGridView1; 
this.dataGridView1 = new System.Windows.Forms.DataGridView(); 

有:

public DataGridViewFocused dataGridView1; 
this.dataGridView1 = new DataGridViewFocused(); 

从那里你总是可以通过添加隐藏焦点矩形下面一行:

this.dataGridView1.ShowFocus = false; 

或者,例如,如果你想隐藏多选活动期间矩形只有,你可以这样做以下:

private void DataGridView1_SelectionChanged(object sender, EventArgs e) 
{ 
    if (this.dataGridView1.SelectedCells.Count > 1) 
    { 
     this.dataGridView1.ShowFocus = false; 
    } 
    else 
    { 
     this.dataGridView1.ShowFocus = null; 
    } 
} 

Default behavior on Tab + hiding focus rectangle on multi-select

enter image description here

做到这一点:

进入到DataGridView的财产,将CellBorderStyle属性设置为none ..

+0

这绝对不会达到预期结果的第二张图像。那会产生没有蓝色的行。 –

+0

嗨Bowen我修改了我的答案,并在我的结尾检查了一下,我认为这会帮助你,谢谢!... –

+0

我拿走了我的downvote,因为它确实接近我想要的。我确实想拥有边框,所以这对我来说不起作用。谢谢! –