0

我正在尝试以绑定到 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

当表单加载时,标签页在那里并按预期标记,但它们看起来是空的(没有表格)。

我确实尝试将 DataSource 设置为名为 binData 的 DataSet(而不是特定表),然后将 dgvData 的 DataMember 属性设置为我要在其中显示的特定表的名称……这没有区别。

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

4

2 回答 2

0

下面是一些将 dgvs 添加到流面板的粗略代码:

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 是另一种选择。

于 2015-05-04T22:55:46.743 回答
0

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

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

于 2015-05-05T13:14:10.030 回答