Vb.net 绑定到DataTable的DataGridView未显示

Vb.net 绑定到DataTable的DataGridView未显示,vb.net,winforms,datagridview,datatable,truedbgrid,Vb.net,Winforms,Datagridview,Datatable,Truedbgrid,我试图以绑定到DataTable的形式显示DataGridView,但它没有显示出来。我使用的是C1TrueDBGrid,这很有效……由于TrueDBGrid的一些复杂性,我决定改用DataGridView。有人能帮我弄清楚为什么什么都没出现吗 以本人声明的形式: Public binData As DataSet Friend WithEvents dgvData As System.Windows.Forms.DataGridView binData由通过单独的计算例程创建的表填充。那么这

我试图以绑定到DataTable的形式显示DataGridView,但它没有显示出来。我使用的是C1TrueDBGrid,这很有效……由于TrueDBGrid的一些复杂性,我决定改用DataGridView。有人能帮我弄清楚为什么什么都没出现吗

以本人声明的形式:

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
当表单加载时,选项卡页面在那里并按预期标记,但它们看起来是空的(没有表)

我确实尝试将数据源设置为名为binData的数据集(与特定表相反),然后将dgvData的DataMember属性设置为要在其中显示的特定表的名称……这没有什么区别


注意:我需要能够在运行时以编程方式执行此操作,而不是使用可视化设计器,因为在表单加载特定数据集之前,我不知道所需的网格的确切数量-它获得的数据集可以有不同数量的表,这取决于用户想要什么。

下面是一些将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作为属性的模型开始。“流”面板中的锚定不起作用,因此可能需要更改某些自定义代码的宽度


Flow panel不会滚动,因此可能不是最佳选择-可以查看TableLayout。TabControl是另一个选项。

好吧,事实证明我所做的一切都没有错。问题出现在一行代码中,与绑定DGV的数据源或任何内容无关


ComponentOne有一个名为ThemeControl的控件,您可以在其中为窗体和其中的控件设置主题。我有一行代码将dgvData的主题设置为我的默认应用程序主题(设置视觉样式和有关颜色、字体等的详细信息)。不管出于什么原因,这使得我的网格不可见。我将与他们一起记录一个票证。

您正在将bindingsource的数据源设置为表,但没有将网格本身的数据源设置为任何内容。@Jeremy-在with块中,我设置了dgvData的。数据源=binding。要使网格的数据源成为表,我还需要做更多的工作吗?dgvData应该是窗体(GUI)上的控件,而不是变量。删除dgvData的Dim/Friend语句,并从工具箱中的“数据”文件夹中向窗体添加控件。@rheitzmann-难道我不能以编程方式创建控件并将其添加到窗体吗?正如我所说,使用C1TrueDBGrid(ComponentOne的第三方控件)可以很好地工作。只是它们的控件的属性和行为不同…所以我不确定DataGridView缺少什么…尽管这确实提示我在“Dim dgvData=New System.Windows.Forms.DataGridView”的表单加载事件中去掉“Dim”。不幸的是,这没有什么区别(