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


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

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

美女呀,离线,留言给我吧!
龙潭春早
  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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/8 17:15:00 [只看该作者]

什么地方的MouseDown事件?窗口全局事件?如果是全局事件,肯定是点击任何一个控件都会触发的

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  3楼 | 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 被清空吧?

应该怎么调整好呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/8 20:28:00 [只看该作者]

1楼的条件并不是判断是否点击了Panel 和 Button 按钮好不好,只是判断窗口里有没有Panel 和 Button 按钮。

If Typeof e.sender Is WinForm.Panel  orelse Typeof e.sender Is WinForm.Button Then return

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 中的 所有 勾选
            
        End If
    Next

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


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

多谢!

明天测试一下。

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  6楼 | 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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/18 15:50:00 [只看该作者]

请看4楼。这个锅if … then不背

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


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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/18 17:35:00 [只看该作者]

不是让给您看4楼的代码,是看说明

1楼的条件并不是判断是否点击了Panel 和 Button 按钮好不好,只是判断窗口里有没有Panel 和 Button 按钮。

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


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

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

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



 回到顶部
总数 12 1 2 下一页