CLISTBOX 使用注意事项及多行选择

LISTBOX控件使用起来并不难,但有几点要注意

一、初始化

listBox控件必须初始化其存储容量,如果不初始化其存储容量,当超出默认分配大小的时候会产生溢出,而这时项目可能已经非常大,甚至经过很长时间才发现,产生的异常很难被定位,所以必须初始化存储容量

this->m_excelList.InitStorage(400,10240);  //以防处理大件夹,先分配空间

二、显示水平滚动条

首先在listBox的属性的地方将Horizontal Scroll设置为true;

然后设置listBox滚动条的最大长度,添加代码

this->m_excelList.SetHorizontalExtent(1000);  //设置水平滚动条的最大宽度

多行选择:

如果需要得到/设置当前被选中的行,可以调用intGetCurSel( )/int SetCurSel(int iIndex)。如果你指明了选择多行的风格,你就需要先调用intGetSelCount( )得到被选中的行的数量,然后int GetSelItems( int nMaxItems, LPINT rgIndex)得到所有选中的行,参数rgIndex为存放被选中行的数组。通过调用intGetLBText( int nIndex, LPTSTR lpszText )得到列表框内指定行的字符串。

FindString()   与   FindStringExact()//查找某个 字符串值看列表里面有没有


查找列表框中第一个以指定字符串开头的字符串,

例如FindString("a")就是查找列表框中第一个以a开头的字符串 

FindStringExact()与FindString 类似,但必须匹配整个字符串 


完全匹配字符串

不知道是怎么回事,在用FindString()和FindStringExact()查找字符串时,返回的值完全不正确,根本连最前面的字符都没有匹配正确,而我又要的是完全匹配,想了好久才发现,可能是总是用MFC函数用惯了,以为MFC类应该封装的特别完备,这回我错了

完全匹配的话,就是将ListBox中的值一个个取出来,然后再和想要匹配的字符串判断相不相等就行的

简单点的代码:

for(int temp_loop2=0;temp_loop2<m_excelList.GetCount();temp_loop2++)
{
m_excelList.GetText(temp_loop2,temp_Str2);
if(temp_Str2==L“要匹配的字符串”)
{
//匹配成功
}
}


你可能感兴趣的:(CLISTBOX 使用注意事项及多行选择)