如果在主窗体上收到新数据,如何在子窗体上添加ListView

时间:2013-11-29 00:42:21

标签: vb.net

我有一个子表单(让我们称之为ChildForm),它由父表单(MainForm)实例化。 ChildForm有一个ListView控件,在最初打开时,它根据MainForm管理的公共集合填充数据。管理ListView填充的ChildForm中的方法称为PopulateLog,并调用AddItemsToLog(logEntry)。这很好。

但是,当ChildForm处于打开状态并显示时,MainForm可能会收到添加到集合中的其他元素。因此,为了动态显示接收到的数据,我在MainForm中尝试了以下内容,但它似乎不起作用 - 没有任何内容改变ChildForm中ListView的显示。

        If Application.OpenForms().OfType(Of ChildForm).Any Then
            ChildForm.AddItemsToLog(newLogEntry)
        End If

我在MainForm中尝试过ChildForm.Refresh(),但也没有结果。

我已经搜索了几个小时并且还没有找到一个如何做到这一点的明确例子 - 我怀疑使用事件/代表是方向去 - 任何帮助都表示赞赏。我怀疑这将是一个有用且经常使用的功能,但我很沮丧,因为它没有明确记录。

编辑:另外我应该注意ListViewLogReceived.Items.Count 在增加时被调用 - 但视图似乎没有刷新。这意味着数据的添加只是没有显示。 -

1 个答案:

答案 0 :(得分:0)

我似乎无法选择汉斯的答案,但他把我带到了正确的地方。我(业余)指的是表单的类名,而不是表单的实例化版本。这有效:

If Application.OpenForms().OfType(Of ChildForm).Any Then
    myChildForm.AddItemsToLog(newLogEntry)
End If