我试图在绑定到DataTable的表单中显示DataGridView,但它没有显示出来。我正在使用C1TrueDBGrid这样做,这是有效的...我决定切换到使用DataGridView由于TrueDBGrid的一些复杂性。任何人都可以帮我弄清楚为什么没有显示出来吗?
在表格中我声明了这些:
Public binData As DataSet
Friend WithEvents dgvData As System.Windows.Forms.DataGridView
binData填充了通过单独的计算例程创建的表。然后这是表单加载事件:
'create a tab page and add data grid view for every table in the set
For i = 0 To binData.Tables.Count - 1
Dim tabPage As C1.Win.C1Command.C1DockingTabPage = New C1.Win.C1Command.C1DockingTabPage
tabPage.Text = binData.Tables(i).TableName
tabContent.TabPages.Add(tabPage)
Dim dgvData = New System.Windows.Forms.DataGridView
Dim binding As New BindingSource
binding.DataSource = binData.Tables(i)
With dgvData
.Dock = DockStyle.Fill
.AllowUserToOrderColumns = False
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomLeft
.DataSource = binding
.AutoGenerateColumns = True
End With
tabPage.Controls.Add(dgvData)
Next 'DataTable In binData.Tables
当表单加载时,标签页在那里并按预期标记,但它们看起来是空的(没有表格)。
我确实尝试将DataSource设置为名为binData的DataSet(而不是特定的表),然后将dgvData的DataMember属性设置为我要在其中显示的特定表的名称...这没有什么区别
注意:我需要能够在运行时以编程方式执行此操作而不是使用可视化设计器,因为在表单加载特定数据集之前我不知道所需的网格的确切数量 - 它获得的数据集可以具有根据用户的需要,可以使用不同数量的表。
答案 0 :(得分:0)
这里有一些粗略的代码可以将dgv添加到流程面板:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Static dgvCount As Integer
dgvCount += 1
Dim dgvNew As New DataGridView
dgvNew.Width = DataGridView1.Width
dgvNew.Height = DataGridView1.Height
dgvNew.Name = "dgv" & dgvCount
' clone other properties as need
FlowLayoutPanel1.Controls.Add(dgvNew)
Debug.Print(FlowLayoutPanel1.Controls(FlowLayoutPanel1.Controls.Count - 1).Name)
End Sub
从一个dgv开始 - DataGridView1作为属性的模型。锚定在流程面板中不起作用,因此可能需要一些自定义代码来更改宽度。
流程面板不会滚动,因此可能不是最佳选择 - 请查看TableLayout作为一种可能性。 TabControl是另一种选择。
答案 1 :(得分:0)
ComponentOne有一个名为ThemeController的控件,您可以在其中为表单和控件设置主题。我有一行代码将dgvData的主题设置为我的默认应用程序主题(设置视觉样式和有关颜色,字体等的详细信息)。无论出于何种原因,这使得我的网格不可见。我将和他们一起记录一张票。