VB.NET形式隐藏问题

时间:2009-08-17 16:23:06

标签: vb.net winforms

我有一个自定义表单BBA创建,其B.VisibleChanged句柄。

B上只有一个OK和Cancel按钮,我想在OK命中时做一些逻辑。

B的确定按钮的处理方式如下:

Me.Result = Windows.Forms.DialogResult.OK
Me.Hide()

A中的代码已正确命中并运行,但它永远不会隐藏B。当我检查B上的属性值时,会显示Visible = False

有没有人对此问题的可能原因有任何建议?

修改 此表单是使用Show()命令显示的,因为我稍后要求使用FlashWindow()将表单设为flash。

3 个答案:

答案 0 :(得分:2)

不完全确定你的问题。

  1. 为什么不使用me.Close()而不是me.Hide?
  2. 一次有多个B实例可以吗?如果没有,请转到ShowDialog。
  3. 如果你可以改写这个问题,有人可以解决你的问题。

答案 1 :(得分:1)

我想你想显示一个带有ok和amp;的消息框。取消按钮。而不是使用表单使用mesagebox。 例如:

    DialogResult dgResult = MessageBox.Show("Click Yes or No", "Test App", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
    if (DialogResult.OK == dgResult)
    {
        //Do what you want.
    }
    else
    {
        //Do nothing.
    }

如果你打算使用表格,那就去做吧。想要修改父级的表单,建议使用委托来防止表单B修改表单A的变量。

其他:(不推荐)

将表单B声明为表单A的成员变量。 当需要实例化表格B. 做B.ShowDialog(); 内部在OK&取消do this.dispose(); 当你需要表单B时再次实例化。如果你不经常打电话,重新实例化的开销不会太大。

但如果您只需要确定取消,请改用消息框。

答案 2 :(得分:1)

show / hide方法对我有用:

Public Class frmViewChild   ' your form A
Private WithEvents _edit As frmEdit

“代码

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

HTH