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)一个非常简单的解决方案是将行高设置为 16 像素或更小。这将禁用行标题单元格中的所有图标。
dataGridView1.RowTemplate.Height = 16;
Run Code Online (Sandbox Code Playgroud)