现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

列表框(ListBox) 常用的的操作详解

2012-09-05 11:18 工业·编程 ⁄ 共 1970字 ⁄ 字号 暂无评论

1. 添加数据:声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content.
    
m_ListBox_Content.AddString(_T("123"));  
     m_ListBox_Content.AddString(_T("汉字")); 
     m_ListBox_Content.AddString(_T("English"));  
     m_ListBox_Content.AddString(_T("!@#$%^&*()")); 

2. 获取数据 CString s;

m_ListBox_Content.GetText(1,s);  
MessageBox(s,_T("取得了第2 行的数据"),MB_OK);  
s.ReleaseBuffer();  

将会得到"汉字"这个字符串,如果没有得到"汉字"这个字符串,是因为ListBox 的Sort 属性设为True 了.设为False 之后就按照你编写的顺序写入.

3. 获取选择的数据 首先要将ListBox 的Selection 属性设置为Multiple;

int nSel;  
 
nSel=m_ListBox_Content.GetCurSel();  
CString s;  
m_ListBox_Content.GetText(nSel,s);  
MessageBox(s,_T("您选择的是"),MB_OK);  
s.ReleaseBuffer();  

4. 获取选择ListBox项的多个数据 首先要将ListBox 的Selection 的属性设置为Multiple

int nSel = m_ListBox_Content.GetSelCount();  
CArray< int,int& > arrayListSel;  
arrayListSel.SetSize(nSel);  
m_ListBox_Content.GetSelItems(nSel,arrayListSel.GetData());  
CString s = _T("");  
for( int i=0; i< nSel; i++ )  
 
{  
 
      m_ListBox_Content.GetText( arrayListSel[i], s);  
      MessageBox(s,_T("您选择的是"),MB_OK);  
 

 
5. 双击删除所选项 添加一个ListBox 的双击事件

m_ListBox_Content.DeleteString(m_ListBox_Content.GetCurSel()); 

6. 列表框(ListBox)中的选项逐个往下移

// Select the next item of the currently selected one. 
int nIndex = m_myListBox.GetCurSel(); 
int nCount = m_myListBox.GetCount(); 
if ((nIndex != LB_ERR) && (nCount > 1)) 

   if (++nIndex < nCount) 
      m_myListBox.SetCurSel(nIndex); 
   else 
      m_myListBox.SetCurSel(0); 

 

7.设置listbox的设置水平滚动条

// 设置listbox 的水平滚动条 
    CString str; 
    CSize sz;  
    int dx=0; 
    CDC *pDC = this->GetDC(); //find the longest string!  
    for (int i=0;i < m_AccessList.GetCount();i++)  
    {  
        m_AccessList.GetText( i, str );  
        sz = pDC->GetTextExtent(str);  
        if (sz.cx > dx)  
            dx = sz.cx;  
    }  
    this->ReleaseDC(pDC); //下面的代码屏蔽掉垂直滚动条所占的客户区的尺寸  
    CRect rectWindow,rectClient;  
    this->m_AccessList.GetClientRect(rectClient);  
    this->m_AccessList.GetWindowRect(rectWindow);  
    CSize extSize=rectWindow.Width()-rectClient.Width(); //设置水平滚动条的属性  
    this->m_AccessList.SetHorizontalExtent(dx+extSize.cx); // 设置listbox 的水平滚动条  

给我留言

留言无头像?