Vb.net 共享子程序&;值解析

Vb.net 共享子程序&;值解析,vb.net,infragistics,ultrawingrid,Vb.net,Infragistics,Ultrawingrid,我正在使用一个包含两个windows窗体的项目,一个带有超级网格的主窗体,显示一些数据,另一个将数据添加到其中。 我想在“添加数据”窗体关闭时刷新ultragrid,但目前无法这样做 我需要将add data formform_closing子例程设置为Public Shared Sub,以便使用加载数据的主窗体上的子例程获取ShowDialog.OK值,以便它知道是否刷新它。但是,因为它是一个共享子组件,所以我不能使用Me.Dispose。我该如何解决这个问题 Private Sub fHom

我正在使用一个包含两个windows窗体的项目,一个带有超级网格的主窗体,显示一些数据,另一个将数据添加到其中。 我想在“添加数据”窗体关闭时刷新ultragrid,但目前无法这样做

我需要将add data form
form_closing
子例程设置为
Public Shared Sub
,以便使用加载数据的主窗体上的子例程获取
ShowDialog.OK
值,以便它知道是否刷新它。但是,因为它是一个共享子组件,所以我不能使用
Me.Dispose
。我该如何解决这个问题

Private Sub fHome_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' This is where the UltraGrid gets it's data from

    If fAdd.ShowDialog() = DialogResult.OK Then

        uwgDisplay.DataSource = Nothing
        displayData()

' addData form is open, then get the data from the database (dont refresh it)

    Else
displayData()

' if add data form is closed, then refresh the data
    End If

    Me.Location = New Point(0, 0)

End Sub
这是添加表单上的表单结束子项

  Public Shared Sub Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

    If Globals.savedValue = False Then

        Dim closeBox As MsgBoxResult
        closeBox = MsgBox("Exit without saving?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm")
        If closeBox = MsgBoxResult.Yes Then
            Me.Dispose()

        ElseIf closeBox = MsgBoxResult.No Then
            e.Cancel = True
            Exit Sub
        End If
    Else
        Me.Dispose()
    End If

End Sub
在两行
Me.Dispose()
上,我都被告知

Me仅在实例方法中有效

你的陈述

“我需要使添加数据表单表单关闭子例程 公共共享Sub以允许我获取ShowDialog。确定“

这是不正确的。您无需共享FormClosing方法即可获得DialogResult

Private _myform As frmFoo

Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
    If _myform Is Nothing Then _myForm = New frmFoo
    If _myform.ShowDialog = DialogResult.OK Then
        'do something 
    End If
End Sub
你的陈述

“我需要使添加数据表单表单关闭子例程 公共共享Sub以允许我获取ShowDialog。确定“

这是不正确的。您无需共享FormClosing方法即可获得DialogResult

Private _myform As frmFoo

Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
    If _myform Is Nothing Then _myForm = New frmFoo
    If _myform.ShowDialog = DialogResult.OK Then
        'do something 
    End If
End Sub

总之,您需要的是
fHome\u Load
子例程来使用'Form\u FormClosing``ShowDialog`函数中的值(顺便说一句,您还没有添加该函数),但不能这样做,因为将其设为
公共共享子
意味着您不确定如何关闭它?@David yes,那是correct@MattWilko当我尝试使用
If fAdd.ShowDialog()=DialogResult.OK
而不是共享子对象时,它说
对非共享成员的引用需要对象引用
因此,总结一下,您需要的是
fHome\u Load
子例程来使用'Form\u FormClosing``ShowDialog`函数中的值(顺便说一句,您还没有添加),但无法添加,因为将其设置为
公共共享子项
意味着您不确定如何关闭它?@David是的,没错correct@MattWilko当我尝试使用
If fAdd.ShowDialog()时=DialogResult.OK
如果它不是共享子项,它说
引用非共享成员需要对象引用
在这种情况下,我该怎么做?在每个子例程中使用什么代码?(我是ShowDialog新手,以前从未使用过)嗨,Matt,这在一定程度上起到了作用,但是由于这是在创建“新fAdd”,添加数据表单现在将与主表单一起打开,我如何调整代码以防止出现这种情况?除非您在构造函数中显示fAdd表单(Public Sub New)或者别的什么。无论如何,你可以在按钮中实例化它。请参阅我的更新。在本例中,我该如何做?我在每个子例程中使用什么代码?(我是ShowDialog新手,以前从未使用过它)嗨,Matt,这在一定程度上起到了作用,但是由于这是在创建“New fAdd”,添加数据表单现在将与主表单一起打开,我如何调整代码以防止出现这种情况?除非您在构造函数(Public Sub New)或其他内容中显示fAdd表单,否则不应该这样做。无论如何,您可以在按钮中实例化它。请参阅我的更新