0

自从两年前开始使用 VB.NET 通过拖网论坛以来,我已经成功地找到了所有问题的答案,但这一次我失败了,我决定加入我最喜欢的论坛,在那里我总能找到最好的答案。这个 :-)

我有点像初学者,所以给你们装弹枪,因为我们开始了……

在我的主窗体中,我有一个 DGV(称为“gridDisplay”)来显示数据。此 DGV 是只读的,因为它仅用于显示数据,而不是与之交互。

我有一个类(称为“TaskData”)的任意数量的副本,其中包含要显示的数据,并且要在主窗体中显示的数据是活动的“TaskData”类的数据。

我想出了一个绝妙的想法(我现在有疑问......)让 TaskData 类创建一个 DGV,因为它知道其中有什么数据以及如何显示它,然后我必须在主窗体中做所有事情是将那里的 DGV 设置为 Active TaskData 类的 DGV(请参见下面的代码)

With ActiveTask

    'Assign the active DataDisplay to the one in the main form
    Me.gridDisplay = .TaskData.DataDisplay
    Me.gridDisplay.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
    Me.gridDisplay.Refresh() 'Trying to make it update
    Me.gridDisplay.Update() 'Trying to make it update
    MsgBox("Row count: " & Me.gridDisplay.RowCount)
End With

好的,所以 .TaskData.DataDisplay 中的 DGV 有 1 列和 500 行。主窗体中的 One 设置为默认 2 列且无行(在设计器中设置)

在上面的代码之后,在主窗体中视觉上什么都没有发生。仍然是 2 列和 0 行。但是,文本框显示:“行数:500”如果我在那里放置一个断点,我可以检查 Me.gridDisplay 并且它包含所有应该存在的数据。为什么不显示?将一个 DGV 分配给另一个 DGV 是不是在做一些不明智的事情?

任何帮助将非常感激。任何建设性的批评同样如此:-)

4

1 回答 1

0

我认为您应该在
Me.gridDisplay.Refresh()
Me.gridDisplay.Update()之前再次调用数据源

像这样,
gridDisplay.DataSource = dataset.Tables["your table"];

于 2013-02-08T09:19:43.650 回答