分享

ComboBox的常用属性

 L罗乐 2017-09-18

前面介绍了文本框,以及列表框的常用属性和方法。我们所没有介绍的是,这两个控件幸福地生活在了一起,然后呢?当然有然后了,ComboBox就出世了!

ComboBox,中文叫复合框,顾名思义,是把文本框和列表框的特性结合起来的一种控件。这个控件,既可以输入文字,也可以像列表框一样选择选项。

属性

ComboBox的很多属性,例如List,RowSource,BoundColumn,ColumnCount是和ListBox一样的,这里就不再做详细解释。

同样的,MaxLength,SelStart,SelLength这些属性和TextBox中的也是一样的。

另外,ComboBox的AddItem 和 Clear方法,也是和ListBox一样的。

当然,作为一个独立的控件,ComboBox也有自己特定的属性,在这里仔细研究一下。

限制输入

作为一个高贵的ComboBox,如果要摒弃TextBox的血统,也就是不能在框里输入文字,可以由这么两种方式:

MatchRequired

这是一个布尔变量,可以在F4调出ComboBox的属性然后进行设置。设置为True之后,当ComboBox失去焦点时,ComboBox的值必须是他的列表项中的一个。否则,即使ComboBox为空,也会报错。

Style

使用MatchRequired这种设置方法,虽然起到了限制作用,但还是存在用户把ComboBox中的数据删除留空,然后报错的情况。那么如何避免呢?
可以通过调整Style属性来处理。Style属性有两个可选值,

  • 0代表正常可以输入文本,并且选择列表项

  • 设置为2,就代表只能选择列表项中的数据,而不能自行改变。

代码检查

当然,我们也可以通过代码来检查用户输入的到底是不是有效数据。这里会用到ListIndex属性。

我在这里先定义了一个叫做CboCurrency的ComboBox,然后用他的Exit事件:

Private Sub CboCurrency_Exit(ByVal Cancel As MSForms.ReturnBoolean)    If CboCurrency.ListIndex = -1 Then MsgBox 'invalid data !', vbCritical vbOKOnly End Sub

TextColumn

用于设定Text属性返回哪一列的数据。默认是-1,也就是ComboBox的文本显示第一列的数据。如下图所示:

如果我们把这个数字设置为2(当然前提是ComboBox的columncount也要设置为2,并且正确对RowSource进行赋值),那么我们就会发现ComboBox的文本显示的是第二列的值。
TextColumn设置为2的ComboBox长的是这个样子:

Text

在TextBox里,Text属性和Value值相同。但是在ComboBox里,Value返回的是BoundColumn的值,而Text返回的是ComboBox的文本框里显示的值。这个是有区分的,不一定相同。

Column

这个属性用于引用ComboBox中指定行和列的某个值。还是以上面的ComboBox为例,如果我要引用第二行的第一列和第二列的值(也就是澳大利亚元和100),那么我可以这样写:

Private Sub CommandButton1_Click()    With CboCurrency        Debug.Print .Column(0, 0), .Column(1, 0)    End With End Sub
  • column(col, row)属性是先写列,后写行,这和我们一般用的cells(row,column)引用先行后列不同。

  • 另外,column属性的行和列的下标都是从0开始的。column(0,0)代表第一列,第一行所对应的数据。

  • 如果要直接引用所选中列表项的某一列数据,那么column属性的第二个参数可以省略。如果非得要写的话,那么就用ListIndex属性吧

总结一下

  • ComboBox的常用属性



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多