.NET DataGridView:删除"当前行"黑色三角形

Die*_*ego 15 .net datagridview winforms

在DataGridView中,即使将网格设置为只读,行标题上也会出现一个黑色三角形,显示在当前行中.

我想避免它被显示,我也想避免由三角形引起的那些单元格的大填充.我猜填充是由三角形引起的,因为单元格的填充为0.

这样做是否可行?怎么样?

谢谢!

编辑

这是创建行标题文本的方式:

for (int i = 0; i < 5; i++)
{
    DataGridViewRow row = new DataGridViewRow();
    row.HeaderCell.Value = headers[i];
    dataGridView1.Rows.Add(row);
}
Run Code Online (Sandbox Code Playgroud)

headers它的一个简单的阵列串.(string[])

Dav*_*all 18

  • 如果你想保留行标题而不是隐藏它们,那么你可以使用单元格填充将三角形推出视线:

    this.dataGridView1.RowHeadersDefaultCellStyle.Padding = 
        new Padding(this.dataGridView1.RowHeadersWidth);
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果你正在使用行标题文本并希望保持可见,你需要使用一些自定义绘画 - 谢天谢地非常简单.在上面的代码之后,只需附加到RowPostPaint事件,如下所示:

    dataGridView1.RowPostPaint += 
        new DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint);
    
    Run Code Online (Sandbox Code Playgroud)

    并在RowPostPaint方法中:

    void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
    {
        object o = dataGridView1.Rows[e.RowIndex].HeaderCell.Value;
    
        e.Graphics.DrawString(
            o != null ? o.ToString() : "",
            dataGridView1.Font, 
            Brushes.Black, 
            new PointF((float)e.RowBounds.Left + 2, (float)e.RowBounds.Top + 4));
    }
    
    Run Code Online (Sandbox Code Playgroud)

    正如Dan Neely所指出的那样,使用Brushes.Black上面的内容会覆盖任何现有的更改,因此刷子最好使用:

    new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor)
    
    Run Code Online (Sandbox Code Playgroud)

  • 这对于三角形非常有用,但它也会移动标题文本,我想要文本而不是三角形,这可能吗? (2认同)

Joe*_*ite 5

设置RowHeadersVisiblefalse.

  • @Jow White:我希望能够看到标题和标题文本,我只是不想要annoyng三角形. (2认同)

Wiz*_*zou 5

一个非常简单的解决方案是将行高设置为 16 像素或更小。这将禁用行标题单元格中的所有图标。

dataGridView1.RowTemplate.Height = 16;
Run Code Online (Sandbox Code Playgroud)