Datagridview填写第二次尝试。永远不要先尝试Tab Control

时间:2017-12-11 14:31:17

标签: vb.net winforms datagridview tabcontrol

我有一个标签列表,其中每个标签都有自己的“x”数量的datagridviews。由于某种原因,第一个活动选项卡填充datagridviews就好了。当我单击选项卡控件中的第二个选项卡时,datagridviews将填充数据,但gridview显示为空 [当我按照代码显示填充到datagridview中的记录时]

如果我单击另一个选项卡然后再返回第二个选项卡,gridview将再次重新填充,然后显示数据。有谁知道可能导致这种情况的原因?它始终是第一次尝试,从来没有填充其他选项卡[除了第一个活动标签]

1 个答案:

答案 0 :(得分:0)

所以从我所知道的...嵌套的Datagridviews无法使用myDataGrid.Rows.Add(.....)在第一次加载时动态填充。我在第一次加载时能够做到这一点的唯一方法是构建一个Datatable并填充它。无法理解为什么但它有效....

With myDataGrid
        Dim f As Font = .Font
        .Columns.Clear()
        .DataSource = Nothing
        .DataMember = Nothing
        .ColumnCount = 3
        .AutoGenerateColumns = False
        '.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells
        .Columns(0).Name = "MsgID"
        .Columns(0).HeaderText = "MsgID"
        .Columns(0).DataPropertyName = "MsgID"
        .Columns(0).Visible = False
        .Columns(1).Name = "Message"
        .Columns(1).HeaderText = "Message"
        .Columns(1).DataPropertyName = "Message"
        .Columns(2).Name = "Sig"
        .Columns(2).HeaderText = "Sig"
        .Columns(2).DataPropertyName = "Sig"
        .Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        .Font = New Font(f, FontStyle.Bold)
        .DefaultCellStyle.Alignment = 1
        .Refresh()
End With



Dim dt As New DataTable

dt.Columns.Add("MsgID")
dt.Columns.Add("Message")
dt.Columns.Add("Sig")
dt.Columns(0).AutoIncrement = True

With ArrMessages(x)
    Dim R As DataRow = dt.NewRow
    R(0) = .MsgID
    R(1) = .Msgs
    R(2) = .Sig
    dt.Rows.Add(R)
End With

'assign sourcing
 myDataGrid.DataSource = dt
 myDataGrid.Refresh()
 Me.myDataGrid.Parent.Refresh()
 myDataGrid.Refresh()