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

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

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

Re[3]: DataGridViewで特定の行(列)に罫線を引く方法


(過去ログ 85 を表示中)

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

■50817 / inTopicNo.1)  DataGridViewで特定の行(列)に罫線を引く方法
  
□投稿者/ 初心者 (130回)-(2010/06/18(Fri) 17:26:22)

分類:[VB.NET/VB2005 以降] 

VB2008 Express Editionで勉強しています。
DataGridViewで表を作っているのですが、特定の列にだけ罫線を引く方法が分かりません。
Webで調べてみましたが、全体を変える方法(DataGridView2.BorderStyle = Windows.Forms.BorderStyle.FixedSingle)しか見つかりませんでした。
申し訳ありませんが、ご教授ください。

DataGridView2.Rows.Add("りんご")
DataGridView2.Rows.Add("みかん")
DataGridView2.Rows.Add("バナナ")

'バナナの列全体にセルの下側に罫線を引きたい

DataGridView2.Rows.Add("きゃべつ")
DataGridView2.Rows.Add("だいこん")
DataGridView2.Rows.Add("たまねぎ")

'たまねぎの列全体にセルの下側に罫線を引きたい

DataGridView2.Rows.Add("さんま")
DataGridView2.Rows.Add("ぶり")
DataGridView2.Rows.Add("鮭")

以上、宜しくお願い致します。
引用返信 編集キー/
■50820 / inTopicNo.2)  Re[1]: DataGridViewで特定の行(列)に罫線を引く方法
□投稿者/ マサヤ (36回)-(2010/06/18(Fri) 18:21:55)
CellPaintingイベントを使ってください。
引用返信 編集キー/
■50876 / inTopicNo.3)  Re[2]: DataGridViewで特定の行(列)に罫線を引く方法
□投稿者/ 初心者 (131回)-(2010/06/21(Mon) 15:07:27)
No50820 (マサヤ さん) に返信
> CellPaintingイベントを使ってください。

回答ありがとうございます。
CellPaintingでWEB上を検索していたのですが罫線を引くサンプルが見つからず、相変わらず悪戦苦闘しています。
おすすめのサイトや書籍がありましたら教えていただけないでしょうか?

引用返信 編集キー/
■50882 / inTopicNo.4)  Re[3]: DataGridViewで特定の行(列)に罫線を引く方法
□投稿者/ 初心者 (132回)-(2010/06/21(Mon) 16:29:54)
CellPaintingイベントでの実装方法は分からないままですが、RowPostPaintイベントを使うことで実装できました。
いったん解決とさせていただきますが、CellPaintingイベントのほうも引き続き調べたいと思います。

Private Sub DataGridView_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles DataGridView.RowPostPaint
Dim dgv As DataGridView = CType(sender, DataGridView)
'太さ2の黒い線
Dim linePen As New Pen(Color.Black, 2)

'線を引く位置を計算する
Dim startX As Integer = IIf(dgv.RowHeadersVisible, dgv.RowHeadersWidth, 0)
Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1
Dim endX As Integer = startX + _
dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - _
dgv.HorizontalScrollingOffset

If e.RowIndex = 2 Or e.RowIndex = 5 Then
'線を引く
e.Graphics.DrawLine(linePen, startX, startY, endX, startY)
End If

End Sub

解決済み
引用返信 編集キー/
■50883 / inTopicNo.5)  Re[3]: DataGridViewで特定の行(列)に罫線を引く方法
□投稿者/ YAS (3回)-(2010/06/21(Mon) 16:40:27)
2010/06/21(Mon) 22:20:21 編集(投稿者)
初心者さんこんにちは。
例えば,下のようにすると特定の「行」に罫線を引くことができます。
ただ,下の例は「動けばよい」という程度のもので,エラー処理などがありませんので,そのまま使ったりはしないでください。

    Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
        If e.RowIndex > -1 And e.ColumnIndex > -1 Then
            Select Case Me.DataGridView1.Rows(e.RowIndex).Cells(0).Value
                Case "バナナ", "たまねぎ"
                    Using brush As New SolidBrush(e.CellStyle.BackColor)
                        e.Graphics.FillRectangle(brush, e.CellBounds)
                    End Using
                    Using pen As New Pen(Me.DataGridView1.GridColor)
                        With e.CellBounds
                            .Offset(-1, -1)
                            e.Graphics.DrawRectangle(pen, .Left, .Top, .Width, .Height)
                        End With
                    End Using
                    Using Pen As New Pen(Brushes.Black, 2)
                        With e.CellBounds
                            .Offset(-1, -1)
                            e.Graphics.DrawLine(Pen, .Left, .Bottom, .Right, .Bottom)
                        End With
                    End Using
                    If e.Value IsNot Nothing Then
                        Using brush As New SolidBrush(e.CellStyle.ForeColor)
                            Dim y As Integer = e.CellBounds.Y + (e.CellBounds.Height - e.Graphics.MeasureString(e.Value.ToString, e.CellStyle.Font).Height) / 2
                            e.Graphics.DrawString(e.Value.ToString, e.CellStyle.Font, brush, e.CellBounds.X, y, StringFormat.GenericDefault)
                        End Using
                    End If
                    e.Handled = True
            End Select
        End If
    End Sub

解決済み
引用返信 編集キー/
■50921 / inTopicNo.6)  Re[4]: DataGridViewで特定の行(列)に罫線を引く方法
□投稿者/ 初心者 (133回)-(2010/06/22(Tue) 09:05:46)
サンプルコードありがとうございます。
とても勉強になります。
本屋でもいろいろ探して見たのですが、この辺りのイベントについて記述のある本って全然ないですね・・・

No50883 (YAS さん) に返信
> 2010/06/21(Mon) 22:20:21 編集(投稿者)
>
> 初心者さんこんにちは。
> 例えば,下のようにすると特定の「行」に罫線を引くことができます。
> ただ,下の例は「動けばよい」という程度のもので,エラー処理などがありませんので,そのまま使ったりはしないでください。
>
> Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
> If e.RowIndex > -1 And e.ColumnIndex > -1 Then
> Select Case Me.DataGridView1.Rows(e.RowIndex).Cells(0).Value
> Case "バナナ", "たまねぎ"
> Using brush As New SolidBrush(e.CellStyle.BackColor)
> e.Graphics.FillRectangle(brush, e.CellBounds)
> End Using
> Using pen As New Pen(Me.DataGridView1.GridColor)
> With e.CellBounds
> .Offset(-1, -1)
> e.Graphics.DrawRectangle(pen, .Left, .Top, .Width, .Height)
> End With
> End Using
> Using Pen As New Pen(Brushes.Black, 2)
> With e.CellBounds
> .Offset(-1, -1)
> e.Graphics.DrawLine(Pen, .Left, .Bottom, .Right, .Bottom)
> End With
> End Using
> If e.Value IsNot Nothing Then
> Using brush As New SolidBrush(e.CellStyle.ForeColor)
> Dim y As Integer = e.CellBounds.Y + (e.CellBounds.Height - e.Graphics.MeasureString(e.Value.ToString, e.CellStyle.Font).Height) / 2
> e.Graphics.DrawString(e.Value.ToString, e.CellStyle.Font, brush, e.CellBounds.X, y, StringFormat.GenericDefault)
> End Using
> End If
> e.Handled = True
> End Select
> End If
> End Sub
>
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -