Dot-Net

.NET DataGridView:刪除“目前行”黑色三角形

  • July 28, 2019

在 DataGridView 中,即使您將網格設置為只讀,在目前行顯示的行標題處也會有一個黑色三角形。

我想避免顯示它,我也想避免由三角形引起的那些單元格的大填充。我猜填充是由三角形引起的,因為單元格的填充是 0。

有可能這樣做嗎?如何?

謝謝!

編輯

這是創建行標題文本的方式:

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

headers是一個簡單的字元串數組。( string[])

  • 如果您想保留行標題而不是隱藏它們,那麼您可以使用單元格填充將三角形推到視線之外:
this.dataGridView1.RowHeadersDefaultCellStyle.Padding = 
   new Padding(this.dataGridView1.RowHeadersWidth);
  • 如果您正在使用行標題文本並希望保持可見,您需要使用一些自定義繪畫 - 謝天謝地非常簡單。在上面的程式碼之後,只需附加到 RowPostPaint 事件,如下所示:
dataGridView1.RowPostPaint += 
   new DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint);

在 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));
}

正如 Dan Neely 指出的那樣,使用Brushes.Black上述內容將覆蓋任何現有更改,因此最好使用畫筆:

new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor)

引用自:https://stackoverflow.com/questions/5825088