以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]代碼衝突,造成狐表停止工作怎麼解決 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=19266)
|
-- 作者:jaegea
-- 发布时间:2012/5/4 8:29:00
-- [求助]代碼衝突,造成狐表停止工作怎麼解決
Dim r000 As Row = Tables("打辦登記表").Current If e.Form.Controls("CheckBox7").Checked = True Then If r000("流程標記") = 0 Then e.Form.Controls("CheckBox0").Checked = True ElseIf r000("流程標記") = 1 Then e.Form.Controls("CheckBox1").Checked = True ElseIf r000("流程標記") = 2 Then e.Form.Controls("CheckBox2").Checked = True ElseIf r000("流程標記") = 3 Then e.Form.Controls("CheckBox3").Checked = True ElseIf r000("流程標記") = 4 Then e.Form.Controls("CheckBox4").Checked = True ElseIf r000("流程標記") = 5 Then e.Form.Controls("CheckBox5").Checked = True End If e.Form.Controls("ComboBox1").Value = Nothing e.Form.Controls("ComboBox1").Enabled = False For ck As Integer = 0 To 6 e.Form.Controls("CheckBox" & ck).Enabled = True Next Dim nm As String = e.Sender.Name Select Case nm Case "CheckBox0","CheckBox1","CheckBox2","CheckBox3","CheckBox4","CheckBox5","CheckBox6" If e.Sender.Checked Then e.Form.Controls("CheckBox0").Checked = (nm = "CheckBox0") e.Form.Controls("CheckBox1").Checked = (nm = "CheckBox1") e.Form.Controls("CheckBox2").Checked = (nm = "CheckBox2") e.Form.Controls("CheckBox3").Checked = (nm = "CheckBox3") e.Form.Controls("CheckBox4").Checked = (nm = "CheckBox4") e.Form.Controls("CheckBox5").Checked = (nm = "CheckBox5") e.Form.Controls("CheckBox6").Checked = (nm = "CheckBox6") End If End Select Else For ck As Integer = 0 To 6 e.Form.Controls("CheckBox" & ck).Checked = False e.Form.Controls("ComboBox1").Enabled = True e.Form.Controls("ComboBox1").Value = r000("編輯者") e.Form.Controls("CheckBox" & ck).Enabled = False Next End If
以上紅色代碼,控件的默認選擇狀態與控件單選模式的代碼衝突,造成狐表停止工作,怎麼解決啊?? 此主题相关图片如下:004.jpg
|
-- 作者:狐狸爸爸
-- 发布时间:2012/5/4 8:53:00
--
这得看你的代码设置在哪里,看你的代码,估计是出现了死循环造成的。例如A变导致B变,B变导致C变,C变导致A变,就形成了死循环。
最好用一个简单的项目,设计好窗口,写上代码,然后传上来,并来说明你的目的和遇到的问题。
|
-- 作者:程兴刚
-- 发布时间:2012/5/4 9:10:00
--
这样简化一下试试:
Dim r000 As Row = Tables("打辦登記表").Current
If r000 isnot nothing If r000("流程標記") >= 0 and r000("流程標記") < 6Then e.Form.Controls("CheckBox" & r000("流程標記")).Checked = e.Form.Controls("CheckBox7").Checked End If
Dim nm As String = e.Sender.Name e.Form.Controls("ComboBox1").Value = Nothing e.Form.Controls("ComboBox1").Enabled = not e.Form.Controls("CheckBox7").Checked For ck As Integer = 0 To 6 e.Form.Controls("CheckBox" & ck).Enabled = e.Form.Controls("CheckBox7").Checked
e.Form.Controls("CheckBox" & ck).Checked = (nm = "CheckBox" & ck) Next e.Form.Controls("ComboBox1").Value = r000("編輯者")
end if
|
-- 作者:jaegea
-- 发布时间:2012/5/4 10:00:00
--
程版,用你簡化的代碼也是一樣的問題,附件是原代碼及簡單代碼的簡單項目。
我的目的是:當CheckBox7選中時,CheckBox0-CheckBox6可選,并且從表A的流程標記列讀數據,流程標記列的值0-5,對應CheckBox0-5的選中狀態,CheckBox6默認就行,ComboBox1清空且控件不可編輯;CheckBox7非選中時,CheckBox0-6非選中並且控件不可編輯,ComboBox1輸入為編輯者列的值
|
-- 作者:jaegea
-- 发布时间:2012/5/4 10:02:00
--
附件上傳不了,再傳一次
|
-- 作者:程兴刚
-- 发布时间:2012/5/4 10:04:00
--
简化只在原基础上进行,现在需要您告诉这些代码用于哪一个事件?
|
-- 作者:jaegea
-- 发布时间:2012/5/4 10:59:00
--
用在窗口的全局事件中的CheckedChanged裡面,以對窗口的選中狀態進行判斷
|
-- 作者:狐狸爸爸
-- 发布时间:2012/5/4 13:14:00
--
|
-- 作者:程兴刚
-- 发布时间:2012/5/4 14:04:00
--
只要是全局事件,就要判断控件名称,有的控件根本没有Checked属性,您为何没有这层判断?
|
-- 作者:jaegea
-- 发布时间:2012/5/4 14:06:00
--
放在chickbox7的CheckedChanged中只能對CheckBox7進行判斷,無法將CheckBox0-6進行模擬單選
[此贴子已经被作者于2012-5-4 14:10:03编辑过]
|