表格意外行动

时间:2014-10-01 06:06:34

标签: vb.net

我会尽力解释这个。

我有windows表单应用程序,它包含多种形式。第一种形式 打开是一种非模态形式,作为命令形式发出各种格式 基础预订计划。第二种形式也打开,基本上是我的 申请表的主要表格。此表单包含多个复选框以运行方法 更改预订程序。这种形式也是无模式的。每个盒子 检查并发运行并执行删除,更改和添加的方法 res计划如下。可以在任何给定时间检查各种盒子。下面是代码 处理复选框:

Private Sub frmOWTMain_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp

    If e.KeyCode = Keys.Enter Then
        Me.Hide()  'here i want to hide the OWTMain form
        Call ckforPNR()
        If Me.cbPricing.Checked Then
            Call doPricing()
            Me.cbPricing.Checked = false
        End If
        If Me.cbUdids.Checked Then
            frmUdids.Show()
            Me.cbUdids.Checked = False
        End If
        If Me.cbMod.Checked Then
            Call doModUdids()
        End If
        If Me.cbFare.Checked Then
            Call doFareSavings()
            Me.cbFare.Checked = False
        End If
    End If
    Me.show()  'This is the problem. This runs during method calls. All I'm
       'looking to do is re display the OWTMain form.   
End Sub 

此时我想重新显示上面的OWTMain表单。这是 我遇到问题的地方。如您所见,调用了许多方法 其中涉及向用户显示其他形式。我不想要任何这些 表单是模态的,因为我希望原始的第一个打开的表单仍然是 能够向res程序发出命令以查看其他表单所需的信息。

以下是一些方法调用的示例:

Private Sub doPricing()
    Dim myPrice As New Pricing   'a call to another class that handles pricing
    If myPrice.getTQT = False Then
        frmAddPricing.ShowDialog()  'showing new forms
    Else
        frmCurPricing.ShowDialog()
    End If
End Sub

Private Sub doFareSavings()
    Dim myPrice As New Pricing
    If myPrice.checkForFS = False Then
        frmFS.ShowDialog()  'showing new forms
    End If
    If myPrice.checkForFS = True Then
        frmFSVerify.ShowDialog()
    End If
End Sub

当我调用这些方法中的任何一种时,OWTMain的形式会过早地显示出来 被调用方法中的表单仍在运行。我希望顶部的代码能够运行 按照呼叫的顺序,但事实并非如此。我只想重新展示OWTMain 运行所有代码后的表单。没有,我无法解决这个问题 创建大量代码来缩小窗口的打开和关闭。

对此的任何帮助将不胜感激。谢谢。 约翰

1 个答案:

答案 0 :(得分:0)

这将检查所有子表单是否已关闭,然后重新显示主表单。

删除退出me.show()

Public Sub ReShowMainForm()
    ' add all sub forms to this check
    if frmFS.Visible = false andalso 
       frmUdids.Visible = false andalso
       frmFSVerify.Visble = false then 
      Me.Show
    End If
End Sub

将xyzForm.Show更改为xyzForm.Show(me)以使主窗体可用作子窗体的父窗口。

处理每个子表单中的FormClosed事件并添加以下代码

DirectCast( me.parent, frmOWTMain).ReShowMainForm()