Vb.net 共享子程序&;值解析
我正在使用一个包含两个windows窗体的项目,一个带有超级网格的主窗体,显示一些数据,另一个将数据添加到其中。 我想在“添加数据”窗体关闭时刷新ultragrid,但目前无法这样做 我需要将add data formVb.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
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表单,否则不应该这样做。无论如何,您可以在按钮中实例化它。请参阅我的更新