实现如下:'这是 Form1 的代码 Option ExplicitPrivate Sub cmdCancel_Click() g_blnOK = False End SubPrivate Sub cmdOK_Click() g_blnOK = True End SubPrivate Sub Command1_Click() '显示 Form2 窗体 Form2.Show vbModal
If g_blnOK Then MsgBox "用户单击了 Form2 中的确定按钮!" Else MsgBox "用户单击了 Form2 中的取消按钮!" End If
End Sub '这是 Form2 的代码 Option ExplicitPrivate Sub cmdCancel_Click() g_blnOK = False Unload Me End SubPrivate Sub cmdOK_Click() g_blnOK = True Unload Me End Sub '添加一个模块 Option ExplicitPublic g_blnOK As Boolean
可以不用模块,不用全局变量,改为窗体中的公用变量Form1的代码:Option ExplicitPrivate Sub Command1_Click() Form2.Show vbModal Select Case Form2.iModalResult Case 1 MsgBox "用户单击了 Form2 中的确定按钮!" Case 2 MsgBox "用户单击了 Form2 中的取消按钮!" End Select End Sub Form2的代码: Option ExplicitPublic iModalResult As IntegerPrivate Sub cmdOK_Click() iModalResult = 1 Me.Hide End SubPrivate Sub cmdCancel_Click() iModalResult = 2 Me.Hide End Sub
--FORM1 (一个COMMAND)Option ExplicitPrivate Sub Command1_Click() MsgBox Form2.LoadForm()
End Sub --FORM2 (两个COMMAND)Option ExplicitDim M_Return As StringPublic Function LoadForm() As String Me.Show 1 LoadForm = M_Return End FunctionPrivate Sub Command1_Click() M_Return = Command1.Name Unload Me End SubPrivate Sub Command2_Click() M_Return = Command2.Name Unload Me End Sub
谢谢各位,看来这个VB还是行啊,特别是在用了C++BUIDER后^_^
比如: lngYes = MsgBox("数据发生变化,是否保存?", vbYesNo, "提示") If lngYes = vbYes Then cmdOK_Click Else Unload Me End If
Option ExplicitPrivate Sub cmdCancel_Click()
g_blnOK = False
End SubPrivate Sub cmdOK_Click()
g_blnOK = True
End SubPrivate Sub Command1_Click()
'显示 Form2 窗体
Form2.Show vbModal
If g_blnOK Then
MsgBox "用户单击了 Form2 中的确定按钮!"
Else
MsgBox "用户单击了 Form2 中的取消按钮!"
End If
End Sub
'这是 Form2 的代码
Option ExplicitPrivate Sub cmdCancel_Click()
g_blnOK = False
Unload Me
End SubPrivate Sub cmdOK_Click()
g_blnOK = True
Unload Me
End Sub
'添加一个模块
Option ExplicitPublic g_blnOK As Boolean
在C++Builer中,可以直接这样用:ret=Form1->ShowModal()它能够直接返回,不知道VB中有没有类似用法?如果不行,看来我也只好用变量或者函数来传递了^_^
Form2.Show vbModal
Select Case Form2.iModalResult
Case 1
MsgBox "用户单击了 Form2 中的确定按钮!"
Case 2
MsgBox "用户单击了 Form2 中的取消按钮!"
End Select
End Sub
Form2的代码:
Option ExplicitPublic iModalResult As IntegerPrivate Sub cmdOK_Click()
iModalResult = 1
Me.Hide
End SubPrivate Sub cmdCancel_Click()
iModalResult = 2
Me.Hide
End Sub
--FORM1 (一个COMMAND)Option ExplicitPrivate Sub Command1_Click()
MsgBox Form2.LoadForm()
End Sub
--FORM2 (两个COMMAND)Option ExplicitDim M_Return As StringPublic Function LoadForm() As String
Me.Show 1
LoadForm = M_Return
End FunctionPrivate Sub Command1_Click()
M_Return = Command1.Name
Unload Me
End SubPrivate Sub Command2_Click()
M_Return = Command2.Name
Unload Me
End Sub
lngYes = MsgBox("数据发生变化,是否保存?", vbYesNo, "提示")
If lngYes = vbYes Then
cmdOK_Click
Else
Unload Me
End If