Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET表单隐藏问题_Vb.net_Winforms - Fatal编程技术网

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()

调用以使表单闪烁,但我并不完全确定您的问题

  • 为什么不用me.Close()而不用me.Hide
  • 一次有多个B实例可以吗?如果没有,请转到ShowDialog

  • 如果你能重新表述这个问题,也许有人能解决你的问题。

    对你的问题不太确定

  • 为什么不用me.Close()而不用me.Hide
  • 一次有多个B实例可以吗?如果没有,请转到ShowDialog

  • 如果你能重新表述这个问题,也许有人能解决你的问题。

    我想你想显示一个带有“确定和取消”按钮的消息框。不要使用表单,而要使用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