如何解决DataGridView是否始终依赖于公共属性来获取列值?
| 在运行时,我有行的集合(Row
类)。它们每个都由列值组成,由ColumnValue
类的实例表示。列的名称在运行时确定,并位于单独的列描述符集合(collection2ѭ类)中。
我想创建一个显示所有“ 0”实例的“ 3”。当然,“ 3”列应与包含集合中“ 2”实例指定的列完全相同。
但是由于ѭ3的列只能从列表项的公共属性中获取其值,并且我无法在运行时轻松定义此类属性,因此无法使用ѭ3来显示表格数据。
正确?
考虑以下VB类:
\' Classes for table structure representation
Public Class TColumn \' describes my columns
Public Name As String
Public Index As Integer
Public Sub New(ByVal AName As String)
Name = AName
End Sub
End Class
Public Class TTable \' describes a table
Public Name As String
Public Columns As Collection
Public Sub New(ByVal AName As String)
Name = AName
Columns = New Collection
End Sub
End Class
\' Classes for table data
Public Class TRow \' Container for one row\'s column values
Public ColumnValues As Collection
Public Sub New()
MyBase.New()
ColumnValues = New Collection()
End Sub
End Class
Public Class TTableData \' Container for a table\'s rows
Public Table As TTable
Public Rows As Collection
Public Sub New(ByVal ATable As TTable)
MyBase.New()
Table = ATable
Rows = New Collection()
End Sub
End Class
和这个主要的形式代码:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim T As TTable
Dim TD As TTableData
Dim CV As Collection
T = New TTable(\"Sample\")
T.Columns.Add(New TColumn(\"Column1\"))
T.Columns.Add(New TColumn(\"Column2\"))
TD = New TTableData(T)
CV = New Collection
CV.Add(\"Row1Col1\")
CV.Add(\"Row1Col2\")
TD.Rows.Add(CV)
CV = New Collection
CV.Add(\"Row2Col1\")
CV.Add(\"Row2Col2\")
TD.Rows.Add(CV)
\' Question: How can I create a DataGridView that displays this:
\'
\' Column1 Column2
\' Row1Col1 Row1Col2
\' Row2Col1 Row2Col1
\'
\' WHILE the Columns collection contents are dynamic,i.e. determined at runtime,not at compile- or design-time?
End Sub
End Class
我不知道在定义(在运行时)Column1
\''3ѭ列时会指定什么what11ѭ值???
通常会问:“ 3”是否总是想要从具有公共属性的对象实例中获取数据,而这些实例定义了列结构,尤其是值?我无法显示完全没有公共财产的东西吗?
解决方法
您应该覆盖
DataGridView
的CellFormatting
事件,并将e.Value
设置为table(e.RowIndex)(e.ColumnIndex)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。