我的启动表单是一种模态安全表单,工作正常。但是,如果用户“注销”,则必须再次将安全表单显示为模式对话框。最后一步是出现问题。它显示了我的其他形式的形式,但它不是模态...
首先,我调用一个在模块中编写的方法,因为我必须能够从我想要的每个表单中调用此方法。
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()
。
我在这里做错了吗? 或者我应该以其他方式拨打电话吗?
答案 0 :(得分:2)
我不使用ShowDialog;但我相信您需要指定窗口所有者来强制执行该模式。如果我在这里错了,别人会纠正我。
oForm.ShowDialog(me)
** HOLD ON **我会在一秒内改变这一点,我只是回想起你是从一个模块打电话,我不会在基本模块中评估。
答案 1 :(得分:2)
(我的VB很糟糕,所以忽略了语法错误)
要实现您的要求,请指定托管表单。
Public Sub CallWaiterKey(ownerForm as Form)
Dim oForm As frmWaiterKey = New frmWaiterKey()
' ....
'here it goes wrong
oForm.ShowDialog(ownerForm)
' ....
End Sub