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

时间:2017-10-04 13:19:32

标签: c# datagridview

我有一个允许多行选择的DataGridView控件。我遇到的问题是显示选择的当前位置(见下图)。我想没有显示当前的单元格位置。这可能吗?

enter image description here

我希望它看起来像以下......

enter image description here

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

enter image description here

这样做:

转到datagridview的属性并将CellBorderStyle propety设置为none ..