gpt4 book ai didi

c# - DataGridView 是否总是依赖于列值的公共(public)属性?

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:26 26 4
gpt4 key购买 nike

在运行时,我有一个行集合(Row 类)。它们中的每一个都由列值组成,由 ColumnValue 类的实例表示。列的名称在运行时确定,并且位于单独的列描述符集合(Column 类)中。

我想创建一个显示所有 Row 实例的 DataGridView。当然,DataGridView 的列应与包含集合中的 Column 实例指定的列完全相同。

但是由于 DataGridView 的列只能从列表项的公共(public)属性中获取它们的值,而且我不能轻易在运行时定义这样的属性,我无法使用 DataGridView 来显示表格数据。

正确

例如考虑这些 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

我想知道在定义(运行时)Column1DataGridView 列时我会指定什么 DataGridViewColumn.DataPropertyName 值???

一般会问:DataGridView 是否总是想从具有公共(public)属性的对象实例中获取数据,并且这些实例定义了列结构,尤其是值?我无法显示根本没有公共(public)属性的东西?

最佳答案

您应该覆盖 DataGridViewCellFormatting 事件并将 e.Value 设置为 table(e.RowIndex)(e. ColumnIndex).

关于c# - DataGridView 是否总是依赖于列值的公共(public)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6141494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com