Foxtable(狐表)用户栏目专家坐堂 → [求助] 有条件的执行指令,怎么变成了无条件的无限执行了呢?


  共有3555人关注过本帖树形打印复制链接

主题:[求助] 有条件的执行指令,怎么变成了无条件的无限执行了呢?

美女呀,离线,留言给我吧!
龙潭春早
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
[求助] 有条件的执行指令,怎么变成了无条件的无限执行了呢?  发帖心情 Post By:2019/10/8 16:54:00 [显示全部帖子]

用 CheckBox 和 CheckedListBox,设计了一个产品产地的选择窗口。

在选择的时候,需要清空之前选的地址。

所以,在 MouseDown事件中,添加了下面这段代码。

代码中根据判断,只是清空 CheckBox 和 CheckedListBox 的勾选。

但是,现在点击窗口中的控件 Panel 和 Button,也都清空了 CheckBox 和 CheckedListBox 的勾选!

为什么呢?  怎么解决呢?

If e.Form.text = "产品产地" Then
    
    For Each ctr As Object In e.Form.Controls ' 遍历 + 清空
        If Typeof ctr Is WinForm.CheckedListBox Then
            Dim ckL As WinForm.CheckedListBox = ctr
            ckL.Value = ""  ' 清空 所有 CheckedListBox 中的 所有 勾选
            
        ElseIf Typeof ctr Is WinForm.CheckBox Then
            Dim ck As WinForm.CheckBox = ctr
            ck.Checked = False  ' 清空 所有 CheckBox 中的 所有 勾选
            
        ElseIf Typeof ctr Is WinForm.Panel Then
            
        ElseIf Typeof ctr Is WinForm.Button Then
            
        End If
    Next
    
End If


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/10/8 18:07:00 [显示全部帖子]

嗯 是窗口的全局事件。

虽然在窗口点击任何一个控件,都会触发窗口的全局事件,

但是,按照 1楼 条件的设定,点击 Panel 和 Button 按钮,

应该不会导致 CheckBox 和 CheckedListBox 被清空吧?

应该怎么调整好呢?

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/10/9 0:10:00 [显示全部帖子]

多谢!

明天测试一下。

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/10/18 15:25:00 [显示全部帖子]

问题解决了。

不过,1楼中的下述代码,红色字体部分判断了如果是 Panel 和  Button 按钮,

就不做任何处理(也就是说,没有给它们设置清空控件中勾选的动作)。

if … then 的这一用法,之前在论坛中专门请教过蓝老师。
(见:“[讨论] 在线开发指南中的一个问题: 代码好像不全?  发帖心情 Post By:2019/8/7 20:50:00” 
网址:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=139191&authorid=0&page=0&star=1)

那么,这一用法,用在这里怎么就不行了呢?

If e.Form.text = "产品产地" Then    
    For Each ctr As Object In e.Form.Controls ' 遍历 + 清空
        If Typeof ctr Is WinForm.CheckedListBox Then
            Dim ckL As WinForm.CheckedListBox = ctr
            ckL.Value = ""  ' 清空 所有 CheckedListBox 中的 所有 勾选            
        ElseIf Typeof ctr Is WinForm.CheckBox Then
            Dim ck As WinForm.CheckBox = ctr
            ck.Checked = False  ' 清空 所有 CheckBox 中的 所有 勾选

        ElseIf Typeof ctr Is WinForm.Panel Then            
        ElseIf Typeof ctr Is WinForm.Button Then
            
        End If
    Next    
End If

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/10/18 17:23:00 [显示全部帖子]

嗯 知道 4楼 的用法是对的,也是用这个代码解决了问题。

但是,蓝老师,6楼 的问题能给解释一下吗?

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/10/18 18:44:00 [显示全部帖子]

蓝老师,感觉 1楼 的用法,和下面的这个用法一样啊:

图片点击可在新窗口打开查看此主题相关图片如下:窗口中的表(2).png
图片点击可在新窗口打开查看



 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/10/18 22:44:00 [显示全部帖子]

嗯 再研究研究

 回到顶部