[英]How to create a custom display with datagridview
使用VirtualMode
和一個DataGridViewImageColumn
。 在CellValueNeeded
繪制所需的圖像:
Public Class Form1
'Add a DataGridView called DataGridView1 to the form
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim dtb As New DataTable()
dtb.Columns.Add("Col1", GetType(String))
dtb.Columns.Add("Col2", GetType(Integer))
dtb.Rows.Add("AA", 123)
dtb.Rows.Add("CC", 234)
DataGridView1.VirtualMode = True
DataGridView1.AutoGenerateColumns = False
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
DataGridView1.Columns.Add(New DataGridViewImageColumn() With {.Name = "img"})
DataGridView1.DataSource = dtb
End Sub
Private Sub DataGridView1_CellValueNeeded(sender As Object, e As DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded
If DataGridView1.Columns(e.ColumnIndex).Name = "img" AndAlso e.ColumnIndex >= 0 AndAlso e.ColumnIndex < DataGridView1.ColumnCount Then
Select Case e.RowIndex
Case 0 To DataGridView1.RowCount - 2
Dim drw As DataRow = DirectCast(DataGridView1.Rows(e.RowIndex).DataBoundItem, DataRowView).Row
Dim strCol1Value As String = CStr(drw("Col1"))
Dim intCol2Value As Integer = CInt(drw("Col2"))
Dim bmp As New Bitmap(100, 50)
Using gfx As Graphics = Graphics.FromImage(bmp)
Dim brs As Brush = New System.Drawing.Drawing2D.LinearGradientBrush(New Point(0, 0), New Point(100, 50), Color.Black, Color.LightGray)
gfx.FillRectangle(brs, New RectangleF(0, 0, bmp.Width, bmp.Height))
gfx.DrawString(strCol1Value, New Font("Arial", 12), Brushes.Red, New PointF(0, 0))
gfx.DrawString(intCol2Value.ToString, New Font("Arial", 12), Brushes.Yellow, New PointF(0, 25))
End Using
e.Value = bmp
Case DataGridView1.RowCount - 1
Dim bmp As New Bitmap(100, 50)
Using gfx As Graphics = Graphics.FromImage(bmp)
gfx.DrawString("NEW", New Font("Arial", 12), Brushes.Red, New PointF(0, 0))
End Using
e.Value = bmp
Case Else
End Select
End If
End Sub
End Class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.