多次判断多个参数时的跳转问题
很抱歉无法让大家理解实际情况如下:
一个对话框上有2个combo,当按确认后就要进行2次如下操作:
读取combo内的数据,然后通过一个子函数进行判断,之后正确则变量赋值,错误则根据不同的错误情况提供不同的错误提示(2个以上),错误提示时需要跳过之后的过程,并使用GUICtrlSetState($Combo_ID, $GUI_FOCUS)提示需要修改的地方。
GUICreate("",200, 100)
$cb_1=GUICtrlCreateCombo("1",13, 10, 182, 25)
$cb_2=GUICtrlCreateCombo("2",13, 39, 182, 25)
$bt_1=GUICtrlCreateButton("确定",28, 70, 64, 22)
$bt_2=GUICtrlCreateButton("退出",116, 70, 64, 24)
GUISetState()
While 1
SwitchGUIGetMsg()
Case $bt_1
$_f1 = Func1(GUICtrlRead($cb_1))
Switch @error
Case 0
;赋值
Case 1
ToolTip("error1")
GUICtrlSetState($cb_1, $GUI_FOCUS)
;==> 希望在此处跳出 Switch 继续 Case $bt_2 <==;
Case 2
ToolTip("error1")
GUICtrlSetState($cb_1, $GUI_FOCUS)
;==> 同上 <==;
EndSwitch
$_f1 = Func1(GUICtrlRead($cb_2))
Switch @error
Case 0
;赋值
Case 1
ToolTip("error3")
GUICtrlSetState($cb_2, $GUI_FOCUS)
Case 2
ToolTip("error4")
GUICtrlSetState($cb_2, $GUI_FOCUS)
EndSwitch
Case $bt_2
Exit
EndSwitch
WEnd
Func Func1()
EndFunc
Func Func2()
EndFunc
[ 本帖最后由 pw4321 于 2008-6-24 22:53 编辑 ] :face (13): 理解有点困难
你想实现什么吧? 这是对楼主的意思的理解的极限了的做法,不知道大家能不能明白我写的理解了的楼主的意思.
Local $_f=11,$_f1=1,$_f2=2
Switch $_f
Case 11
MsgBox(0,"",11)
Switch $_f1
Case 1
MsgBox(0,"",21)
;==> 希望在此处跳转到 case 12<==;
MsgBox(0,"",12)
Case 2
MsgBox(0,"",22)
EndSwitch
Switch $_f2
Case 1
MsgBox(0,"",23)
Case 2
MsgBox(0,"",24)
EndSwitch
Case 12
Case 13
MsgBox(0,"",13)
EndSwitch 很抱歉无法让大家理解
实际情况如下:
一个对话框上有2个combo,当按确认后就要进行2次如下操作:
读取combo内的数据,然后通过一个子函数进行判断,之后正确则变量赋值,错误则根据不同的错误情况提供不同的错误提示(2个以上),错误提示时需要跳过之后的过程,并使用GUICtrlSetState($Combo_ID, $GUI_FOCUS)提示需要修改的地方。 能不能这样理解楼主的意思,点击BT1后有2个计算,如果第一个计算产生错误就不进行第二个计算了?我认为加个开关变量比较合适。
GUICreate("",200, 100)
$cb_1=GUICtrlCreateCombo("1",13, 10, 182, 25)
$cb_2=GUICtrlCreateCombo("2",13, 39, 182, 25)
$bt_1=GUICtrlCreateButton("确定",28, 70, 64, 22)
$bt_2=GUICtrlCreateButton("退出",116, 70, 64, 24)
GUISetState()
dim $swch=False
While 1
SwitchGUIGetMsg()
Case $bt_1
$_f1 = Func1(GUICtrlRead($cb_1))
Switch @error
Case 0
;赋值
Case 1
ToolTip("error1")
GUICtrlSetState($cb_1, $GUI_FOCUS)
$swch=True
;==> 希望在此处跳出 Switch 继续 Case $bt_2 <==;
Case 2
ToolTip("error1")
GUICtrlSetState($cb_1, $GUI_FOCUS)
;==> 同上 <==;
EndSwitch
if not $swch Then
$_f1 = Func1(GUICtrlRead($cb_2))
Switch @error
Case 0
;赋值
Case 1
ToolTip("error3")
GUICtrlSetState($cb_2, $GUI_FOCUS)
Case 2
ToolTip("error4")
GUICtrlSetState($cb_2, $GUI_FOCUS)
EndSwitch
EndIf
$swch=False
Case $bt_2
Exit
EndSwitch
WEnd
Func Func1()
EndFunc
Func Func2()
EndFunc
[ 本帖最后由 顽固不化 于 2008-6-24 21:21 编辑 ] 以前玩SWITCH, 不是AU3中,总感觉不带劲, 貌似在判断数值时, 还得从大到小, 不能从小到大, 要不小的也满足条件..
现在省事我一般就用
if then
elseif then
...
else
endif 原帖由 顽固不化 于 2008-6-24 20:00 发表
能不能这样理解楼主的意思,点击BT1后有2个计算,如果第一个计算产生错误就不进行第二个计算了?我认为加个开关变量比较合适。
...
办法可行
事实上我现在使用 do ... exitloop ... exitloop ... until 0 来实现,不过可读性太差,说不定过几天就忘了为什么要这么做了。
谢谢!
页:
[1]