0

我的启动表单是一种模式安全表单,可以正常工作。但是,如果用户“注销”,则安全表单必须再次显示为模式对话框。最后一步是一切都出错的地方。它在我的其他表单之前显示表单,但它不是模态的......

首先,我调用一个在模块中编写的方法,因为我必须能够从我想要的每个表单中调用这个方法。

Public Sub CallWaiterKey()
Dim oForm As frmWaiterKey = New frmWaiterKey()
    Try
        If mWaiterKey.Length > 0 And mWaiterKeyType.Length > 0 Then

            If Convert.ToInt32(mWaiterKey) > 0 And Convert.ToInt32(mWaiterKeyType) = 2 Then
                oForm.TypeOfKey = 2
            ElseIf Convert.ToInt32(mWaiterKey) > 0 And Convert.ToInt32(mWaiterKeyType) = 1 Then
                oForm.TypeOfKey = 1
            End If
            'here it goes wrong
            oForm.ShowDialog()
        End If

    Catch ex As Exception
        MsgBox(ex)
    End Try
End Sub

当我调用oForm.ShowDialog()(即frmWaiterKey)时,它会出现但不是模态的。我仍然可以单击放置在frmMenu我调用的表单上的按钮CallWaiterKey()

我在这里做错了吗?
还是我应该以其他方式拨打电话?

4

2 回答 2

2

我不使用 ShowDialog;但我相信您需要指定窗口所有者才能强制执行该模式。如果我在这里错了,其他人会纠正我。

oForm.ShowDialog(me)

** HOLD ON ** 我会在一秒钟内改变这个,我刚刚记得你是从一个模块调用的,没有在一个基本模块中进行评估。

这是一个MSDN 参考

于 2012-10-16T13:43:00.620 回答
2

(我的 VB 很烂所以忽略语法错误)

要实现您的要求,请指定托管表单。

Public Sub CallWaiterKey(ownerForm as Form)
  Dim oForm As frmWaiterKey = New frmWaiterKey()
     ' .... 
            'here it goes wrong
            oForm.ShowDialog(ownerForm)
     ' ....
End Sub
于 2012-10-16T13:49:36.793 回答