DataGridViewコントロール−行ヘッダータイトルを描画する
Helpによる行ヘッダーのラベルを設定するのは以下のとおりです。
どういうわけかコンストラクタに入れてもは動作しなかった。
Loadイベントだと動作します。
この場合は前景色や背景色は無視されます。
private void Form1_Load(object sender, EventArgs e)
{
int rowNumber = 1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
row.HeaderCell.Value = "Row" + rowNumber;
rowNumber = rowNumber + 1;
}
dataGridView1.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
}
RowPostPaint イベントで行ヘッダーのタイトルを描画できます。
行番号を表示するには以下のような例になります。
RowHeadersDefaultCellStyleで形式を設定できます。
この場合は前景色や背景色は描画されます。
背景色はTextRenderer.DrawTextでパラメータを指定しなければ描画されません。
private TextFormatFlags MakeFromCellStyle(DataGridViewCellStyle style)
{
TextFormatFlags flags = new TextFormatFlags();
switch( style.Alignment )
{
case DataGridViewContentAlignment.TopLeft: flags |= TextFormatFlags.Top | TextFormatFlags.Left ; break;
case DataGridViewContentAlignment.TopCenter: flags |= TextFormatFlags.Top | TextFormatFlags.HorizontalCenter ; break;
case DataGridViewContentAlignment.TopRight: flags |= TextFormatFlags.Top | TextFormatFlags.Right ; break;
case DataGridViewContentAlignment.MiddleLeft: flags |= TextFormatFlags.VerticalCenter| TextFormatFlags.Left; break;
case DataGridViewContentAlignment.MiddleCenter: flags |= TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter; break;
case DataGridViewContentAlignment.MiddleRight: flags |= TextFormatFlags.VerticalCenter | TextFormatFlags.Right; break;
case DataGridViewContentAlignment.BottomLeft: flags |= TextFormatFlags.Bottom | TextFormatFlags.Left; break;
case DataGridViewContentAlignment.BottomCenter: flags |= TextFormatFlags.Bottom | TextFormatFlags.HorizontalCenter; break;
case DataGridViewContentAlignment.BottomRight: flags |= TextFormatFlags.Bottom | TextFormatFlags.Right; break;
}
if (style.WrapMode == DataGridViewTriState.True) flags |= TextFormatFlags.WordBreak;
return flags;
}
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
DataGridViewCellStyle style = dataGridView1.RowHeadersDefaultCellStyle;
TextFormatFlags flags = MakeFromCellStyle(style);
Rectangle rowBounds = new Rectangle(
style.Padding.Left,
e.RowBounds.Top + style.Padding.Top,
dataGridView1.RowHeadersWidth - style.Padding.Right,
e.RowBounds.Height - style.Padding.Right);
SolidBrush forebrush = new SolidBrush(style.ForeColor);
TextRenderer.DrawText(e.Graphics, "Row" + e.RowIndex.ToString(), style.Font, rowBounds,
style.ForeColor, style.BackColor, flags);
}



