投稿者 るきお  (社会人) 投稿日時 2009/10/29 21:16:44
こんにちは。
通常とは違う方法で表示(描画)を行いたいときは「オーナー描画」と呼ばれる手法を使います。

今回の用件に当てはめるとDataGridViewのCellPaintingイベントを使用することで実現できます。

簡単なサンプルを作ってみましたので参考にしてください。
  
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        Dim table As New DataTable
        table.Columns.Add("科目"GetType(String))
        table.Columns.Add("点数"GetType(Integer))

        table.Rows.Add("国語", 80)
        table.Rows.Add("数学", 30)
        table.Rows.Add("英語", 50)

        DataGridView1.DataSource = table


    End Sub

    Private Sub DataGridView1_CellPainting(ByVal sender As System.ObjectByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting

        If e.ColumnIndex = 1 AndAlso e.RowIndex >= 0 Then
            Dim BarRect As Rectangle = e.CellBounds

            BarRect.Width = BarRect.Width * (e.Value / 100)

            e.Graphics.FillRectangle(Brushes.White, e.CellBounds)
            e.Graphics.FillRectangle(Brushes.Red, BarRect)
            e.Graphics.DrawRectangle(Pens.Black, e.CellBounds)
            e.Handled = True

        End If

    End Sub


このサンプルだと枠線の色がちょっとおかしかったり、選択したときに色が変わらなかったりするので
まだちょっと物足りないですが、オーナー描画の手法は組み込まれているのでこれを参考に発展させていけばよいと思います。

実行するにはフォームにDataGridViewとButtonを貼り付けてください。