【发布时间】:2015-07-11 00:22:27
【问题描述】:
我有一个 DataGridView dgv 显示底层 DataView dv 的内容,我用它来过滤行条目。 (dgv.DataSource = dv)
DataView 中的两列是布尔类型,并显示为 VB 的默认复选框格式,但是,我希望它们分别显示为红色和绿色的正方形(或矩形),分别代表 False 和 True。
我知道对于具有DataGridViewImageColumn 类型列的 DataGridView,我可以简单地生成一个图像并用类似的东西显示它:
bmp = New Bitmap(20, 10)
Using g As Graphics = Graphics.FromImage(bmp)
If VarIsValid Then
g.FillRectangle(Brushes.GreenYellow, 0, 0, bmp.Width - 1, bmp.Height - 1)
Else
g.FillRectangle(Brushes.Red, 0, 0, bmp.Width - 1, bmp.Height - 1)
End If
g.DrawRectangle(Pens.Black, 0, 0, bmp.Width - 1, bmp.Height - 1)
End Using
row.Cells("VarIsValid").Value = bmp
但我不知道如何对源自链接 DataView 的列执行类似操作;当该列甚至不是图像列时,就更少了。
我考虑更改底层 DataView 以包含图像,但后来我不知道如何按该列的值进行过滤。因此我希望有一些方法可以在不改变底层结构的情况下简单地改变可视化。
【问题讨论】:
-
可以在视图加载后重绘单元格吗?
-
是否可以在创建datagridview并填写信息后以这种方式更改列?在不破坏底层数据视图的链接的情况下...
标签: vb.net image datagridview