VB打开窗口后关闭时返回值问题

miaowei127 2007-10-14 10:06:24
我有两个Form,Form1和Form2,Form1通过按钮打开Form2,使用的是Form2.show vbmodal,打开Form2后,有两个按钮,一个确定,一个取消,我在Form1中怎么样判断Form2中点击的是哪个按钮。或者说是当确定时我要在Form2.show vbmodal后执行一段代码,点取消不要执行。怎么样做???

从弹出的窗口返回一个值怎么做?
...全文
945 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2007-10-15
  • 打赏
  • 举报
回复
更正 Action 是 Function。
Tiger_Zhao 2007-10-15
  • 打赏
  • 举报
回复
我一直是用下面的方式处理的,这样有以下好处:
1、将对话框 Form2 用一条语句调用,方便;
2、Form1 和 Form2 的耦合度将到最低,代码维护方便;
3、由 Form2 自己保证 Unload;
3、由于 Form1 不访问 Form2 的任何属性或控件,不会引起不必要的 Form2 自动新建和加载。
'Form1
private sub Command1_Click()
dim lResult as long
lresult = Form2.Action(text1.text)
select case lresult
...
end select
end sub

'Form2
private m_lResult as long
public Sub Action(byval Info as string) as long
on error goto ErrHandler

m_lResult = 0
Label1 = Info
Me.Show vbModal

ExitEntry:
on error resume next
unload me
on error goto 0
Action = m_lResult
ErrHandler:
MsgBox Err.Description
resume ExitEntry
end sub

private sub Command1_Click()
...
m_lResult = 1
unload me
end sub

private sub Command2_Click()
...
m_lResult = 2
unload me
end sub
东方之珠 2007-10-14
  • 打赏
  • 举报
回复
那还不简单:Form2上有command1(确定)、command2(取消),判断点击的是哪个按钮,用下面代码:

if Form2.Command1.Value=1 then
'点击的是确定按钮
endif
if Form2.Command2.Value=1 then
'点击的是取消按钮
endif
波导终结者 2007-10-14
  • 打赏
  • 举报
回复
把那段计算过程独立出来一个过程,并用public sub定义而非private sub,这样在form2里可以直接调用form1.过程名

然后form2里确定按钮按下的代码里,写上Call form1.XXXXX

其实如果form2只是欲实现确定与取消的选择的话,msgbox带两个按钮就可以实现
miaowei127 2007-10-14
  • 打赏
  • 举报
回复
msgbox是我举例说明的,因为有相当复杂的计算过程,必须写在Form1中
波导终结者 2007-10-14
  • 打赏
  • 举报
回复
msgbox可以写在form2里确定按钮按下的代码段里啊
miaowei127 2007-10-14
  • 打赏
  • 举报
回复
我在Form1中的按钮命令中这样写的

private sub command1_click()
form2.show vbmodal

msgbox "111111111"
end sub

form2上有2个按钮,确定,取消

我想点取消的时候不执行msgbox

波导终结者 2007-10-14
  • 打赏
  • 举报
回复
那两个按钮是自己做的话,比如确定是command1,就在command1_click里写下代码,而取消按钮不要写就行了。

第二个问题可以在模块里定义一个全局变量,变化这个变量的值

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧