C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DataGridViewの特定列の罫線を変更したい

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■93134 / inTopicNo.1)  DataGridViewの特定列の罫線を変更したい
  
□投稿者/ ant (1回)-(2019/11/23(Sat) 09:04:32)

分類:[C#] 

DataGridViewの特定列の罫線を変更したいです。

CellPaintingで記述できるとあったので以下のコードを書きました。
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    if (e.ColumnIndex == 5)
    {
         e.Paint(e.ClipBounds, DataGridViewPaintParts.All);
         using (Pen pen = new Pen(Color.Black))
         {
              e.Graphics.DrawLine(pen, e.CellBounds.Right, e.CellBounds.Top, e.CellBounds.Right, e.CellBounds.Height);
         }
         e.Handled = true;
    }
}

実行すると正常に罫線が引かれるのですが、スクロールすると画像のように欠けてしまいます。
罫線が欠けないようにはできないでしょうか。
http://get.secret.jp/pt/file/1574467112.png

引用返信 編集キー/
■93135 / inTopicNo.2)  Re[1]: DataGridViewの特定列の罫線を変更したい
□投稿者/ ant (3回)-(2019/11/23(Sat) 09:33:32)
連投失礼します。
次のセルの描写と重なり合うと罫線が上書きされてしまうようです。
ですので以下のように修正しましたが、それでも欠けてしまいました。
e.Graphics.DrawLine(pen, e.CellBounds.Right-1, e.CellBounds.Top, e.CellBounds.Right-1, e.CellBounds.Height);

ですがブラシで矩形塗りつぶしを行った場合、欠けずに描写できました。
using (Brush pen = new SolidBrush(Color.Black))
{
     e.Graphics.FillRectangle(pen, e.CellBounds.Right-2, e.CellBounds.Top, 2, e.CellBounds.Height);
}

矩形を描くことで今回は解決しましたが、DrawLineでスクロールすると欠ける理由が気になります・・・

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ