如何在窗体上循环选择类型的控件?[英] How do I loop through chosen types of controls on a form?

问题描述

我正在尝试设置一个类模块,它允许我传递表单名称和我想要测试的控件类型(文本框、组合框等),并让它测试它们是否被填充.我的想法是我会有一个类似于 TxtCboLstChkOpt 的参数,如果我只想检查文本框和复选框,我会将其传递 10010 作为类的标志,以了解要检查的类型.我的问题是我不知道如何只运行一次循环并选择那些在其部分中有 1 的类型.通常我会将这个硬编码到 Select Case 语句中,如下所示:

展开|选择|换行|行号
解决方案
不幸的是,acTextBox、acComboBox、acListBox等的值不是2的幂,所以不能按照你怀疑的方式使用.如果要将多个值传递给过程或类方法,则需要使用数组或字符串,其中嵌入了值列表.

PS.您要检查的控件属性是 ControlType 而不是 Type.

您是否使用标志或复选框来确定要检查的控件?因为第二段代码听起来像是你想使用复选框.

无论哪种方式,您都不必使用 select,我只需为您要检查的 5 种控件类型使用 5 个 if 语句.
展开|选择|换行|行号

@Rabbit 我对第二个代码块的计划是根据标志设置布尔变量 (txt, cbo).那么你的建议会循环遍历所有控件五次(每种控件类型一次)?

@NeoPa 我不认为 acTextBox、acComboBox 等的值是 2 的幂,但我可以使用我的标志来选择要添加到列表中的控件类型.您建议使用数组.是否可以根据我的标志系统将控制类型添加到数组中,然后让它遍历类型列表以查看是否应该检查它(而不是 select case 语句)?使用 OP 中的示例,我的标志设置为 10010.我测试第一个字符(文本框)并将其设置为 true,因此我将其添加到数组中.我测试了第二个字符(组合框)并将其设置为 false,因此我不会将其添加到数组中.我继续浏览每种类型,最终在我的类型数组中使用文本框和复选框.因此,然后在通过控件的每个循环中,然后我将遍历数组以查看是否应该检查它.这样的东西能用吗?

我会将 .Type 修复为 .ControlType.

本文地址:https://www.itbaoku.cn/post/1050640.html