VB.NET表单隐藏问题
我有一个自定义表单,VB.NET表单隐藏问题,vb.net,winforms,Vb.net,Winforms,我有一个自定义表单,BB由A创建,它具有B的句柄。VisibleChanged B上只有一个“确定”和“取消”按钮,我想在点击“确定”时执行一些逻辑操作 B的OK按钮处理如下: Me.Result = Windows.Forms.DialogResult.OK Me.Hide() A中的代码正确命中并运行,但它从不隐藏B。当我检查B上的属性值时,它会显示Visible=False 有人对这个问题的可能原因有什么建议吗 编辑 此表单是使用Show()命令显示的,因为我稍后将使用FlashWind
B
B
由A
创建,它具有B的句柄。VisibleChanged
B
上只有一个“确定”和“取消”按钮,我想在点击“确定”时执行一些逻辑操作
B
的OK按钮处理如下:
Me.Result = Windows.Forms.DialogResult.OK
Me.Hide()
A
中的代码正确命中并运行,但它从不隐藏B
。当我检查B
上的属性值时,它会显示Visible=False
有人对这个问题的可能原因有什么建议吗
编辑
此表单是使用
Show()
命令显示的,因为我稍后将使用FlashWindow()
调用以使表单闪烁,但我并不完全确定您的问题
如果你能重新表述这个问题,也许有人能解决你的问题。对你的问题不太确定
如果你能重新表述这个问题,也许有人能解决你的问题。我想你想显示一个带有“确定和取消”按钮的消息框。不要使用表单,而要使用mesagebox。 例如: 如果您要使用表单,要做到这一点&想要修改父表单,建议使用委托来防止表单B修改表单a的变量 其他:(不推荐) 将表单B声明为表单a的成员变量。 需要时,实例化表单B。 做B.ShowDialog(); 在“确定”和“取消”中内部执行此操作。dispose(); 同样,当您需要表单B时,只需实例化即可。如果您不经常调用,重新实例化将不会有太大的开销
但如果您只需要“确定”“取消”,请使用消息框 我想您希望显示一个带有“确定和取消”按钮的消息框。不要使用表单,而要使用mesagebox。 例如: 如果您要使用表单,要做到这一点&想要修改父表单,建议使用委托来防止表单B修改表单a的变量 其他:(不推荐) 将表单B声明为表单a的成员变量。 需要时,实例化表单B。 做B.ShowDialog(); 在“确定”和“取消”中内部执行此操作。dispose(); 同样,当您需要表单B时,只需实例化即可。如果您不经常调用,重新实例化将不会有太大的开销
但如果您只需要“确定”“取消”,请使用消息框 显示/隐藏方法适合我:
Public Class frmViewChild ' your form A
Private WithEvents _edit As frmEdit
“代码
HTH显示/隐藏方法对我很有效:
Public Class frmViewChild ' your form A
Private WithEvents _edit As frmEdit
“代码
HTH你到底想做什么。请给出一些示例代码。您到底想做什么。请给出一些示例代码。我最初使用的是me.Close,但每次遇到代码中的某个点时,我都必须实例化一个新代码,这可能非常频繁。我会使用ShowDialog,但这不允许我在其上使用FlashWindow()。如果使用ShowDialog,则不必每次都创建一个新实例,您可以重用同一个实例,因为关闭它不会处理它。但是如果您只是调用Show,当您调用Close时,表单会自动处理。我最初使用的是me.Close,但每次遇到代码中的某个点时,我都必须实例化一个新的表单,这可能非常频繁。我会使用ShowDialog,但这不允许我在其上使用FlashWindow()。如果使用ShowDialog,则不必每次都创建一个新实例,您可以重用同一个实例,因为关闭它不会处理它。但是如果您只是调用Show,那么当您调用Close时,表单将自动处理。
Private Sub editCell()
Dim PKVal As String
Dim PKVal2 As String
Dim fieldOrdinalPos As Integer
Dim isLastField As Boolean
If _edit Is Nothing Then
_edit = New frmEdit
_edit.MdiParent = Me.MdiParent
End If
'code
_edit.init(<params>)
If Not _edit.isNothing Then
_edit.Show()
_edit.WindowState = FormWindowState.Maximized
_edit.BringToFront()
End If
End Sub
Private Sub _edit_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles _edit.VisibleChanged
If Not _edit.Visible Then
WindowState = FormWindowState.Maximized ' revert after closing edit form
End If
End Sub
Public Class frmEdit ' your form B
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Dim ret As Integer
doOK(ret)
If ret > -1 Then ' no error
Me.Hide() ' close form, but didn't cancel
End If
End Sub