【问题标题】:Calling a function within a dynamically created form - vb.net在动态创建的表单中调用函数 - vb.net
【发布时间】:2016-08-31 15:44:01
【问题描述】:

作为我项目的一部分,我正在动态创建一个表单,如下所示:

        Dim thisticket As New ViewTicket
        thisticket.Text = "Ticket " & ticketnumber
        thisticket.ticketid = ticketnumber
        thisticket.ShowDialog()

此表单包含一个函数“PopulateHistory()”,当调用该函数时,它会启动并从数据库中获取该票证的所有相关历史记录。

该表单上的一个选项允许您通过生成电子邮件、添加文档等来更新工单历史记录;工单更新选项以另一种形式打开,带有 showdialog() 和 topmost = true。

一旦用户完成了他们正在进行的任何更新,更新表单就会关闭,然后我想再次调用“PopulateHistory()”函数,以使历史数据网格视图刷新并显示最新的历史记录。

在创建 'thisticket as New ViewTicket' 之前,我可以说 ViewTicket.PopulateHistory() 并且它会做到,但不是我动态创建了表单,我不能以这种方式调用函数。

有没有办法解决这个问题?

【问题讨论】:

    标签: vb.net forms dynamically-generated populate


    【解决方案1】:

    因为您现在有一个实例,所以您必须调用实例本身的方法。

    thisticket.PopulateHistory()代替ViewTicket.PopulateHistory()

    【讨论】:

    • 我认为它应该是那么简单,但是当我尝试这个时,我得到一个错误......'thisticket'没有被声明。由于其保护级别,它可能无法访问。
    • 确保变量thisticket(持有ViewTicket 实例)存在并且在调用上下文中可见。你必须在实例化后调用它Dim thisticket As New ViewTicket
    • 我试图从中调用 populatehistory() 函数的表单就像一个名为“ticketupdate”的“thisticket”子表单。用户打开了“thisticket”,用户添加了更新,因此显示了“ticketupdate”。在“ticketupdate”的关闭事件中,我想说 thisticket.populatehistory(),所以它肯定会在“将 thisticket 作为新的 ViewTicket”之后,因为一旦用户打开票证就会发生这种情况
    • ticketupdate 上下文中不存在该变量。您必须将其传递给 ticketupdate 类才能使用它。
    • 如何将它传递给班级?对不起,如果这是一个愚蠢的问题
    【解决方案2】:

    由于thisticket 现在是新的ViewTicket

    然后这样称呼它:

    thisticket.PopulateHistory()
    

    thisticket 也继承了ViewTicket 内部的函数,所以你可以这样调用函数。

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2018-06-25
      • 2014-12-21
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      相关资源
      最近更新 更多