CListBox控件用法

来源:互联网 发布:qq飞车刷点卷软件下载 编辑:程序博客网 时间:2024/04/29 21:25

最近在学习MFC,边学边总结了一点资料,与初学者一起共勉!

 

1) 增加记录

  Addstring(str);

  Insertstring(index,str); 在指定位置加入记录

eg1:将Listbox1中选中内容放入Listbox2中

     int index=m_ListboxInput.GetCurSel(); //获取鼠标点击行的索引

   CString temp;

   if(index==LB_ERR){                           

   AfxMessageBox(_T("请选择要添加的项目!"));

   return;

   }

  m_ListboxInput.GetText(index,temp); //获取点击行,并将其内容放置在temp中;

  m_ListBox2.AddString(temp);

eg2:将Listbox1中多行选中内容放入Listbox2中

首先:资源编辑器中修改ListBox2的属性:Selecttion:Multiple

intnCount=m_ListboxInput.GetSelCount();

if(!nCount){

    AfxMessageBox(_T("请选择要添加的项目!"));

   return;

}

else{

int* buffer = newint[nCount];

//memset(buffer,-1, sizeof(int)*nCount);

CString strItem;

m_ListboxInput.GetSelItems(nCount,buffer);

for(int i=0;i<nCount; i++)

{

m_ListboxInput.GetText(buffer[i],strItem);

m_ListBox2.AddString(strItem);

}

delete[] buffer;

}

 

2)删除记录

  DeleteString(index); //删除某一行;

  ResetContent();      //清空ListBox列表

eg3:删除Listbox2中选择行

   int index=m_ListBox2.GetCurSel(); 

   if(index==LB_ERR){

     AfxMessageBox(_T("请选择要删除的项目!"));

    return;

}

   m_ListBox2.DeleteString(index);

eg4:删除Listbox2中全部内容

    方法1: m_ListBox2.ResetContent(); 

   方法2:循环删除,这里需要注意

     int Count = m_ListBox.GetCount();

    for (int i=0 ;i<=Count ;i++)
     {

        m_ListBox.DeleteString(i);

    }

//按以上写法,程序并不能一键全部删除ListBox里面的记录,只能删除一半 , 为什么????

//换成一下写法则可完全删除: 

   int Count = m_ListBox.GetCount();

  for (int i=Count ;i>=0 ; i--)
 {
       m_ListBox.DeleteString(i);

 }

原因分析:

CListBox 在删除一条记录时,已经把记录数重新调整过,所以假设你成功删除了0的那条记录,那你再删除Count(没有效果,进行错误捕捉,就可以发现),因为你进行完第一步操作以后,后面的所有记录都会更新其索引值,此时最大索引值为Count-1.*/

 

eg5:删除多行选中记录

  首先:资源编辑器中修改ListBox2的属性:Selecttion:Multiple

  intnCount=m_ListBox2.GetSelCount();

 if(!nCount){

   AfxMessageBox(_T("请选择要删除的项目!"));

   return;

‍ }

‍else{

   int* buffer = new int[nCount];

   memset(buffer, -1, sizeof(int)*nCount);

   m_ListBox2.GetSelItems(nCount, buffer);

   for(int i=nCount-1; i>=0; i--)  {  

    m_ListBox2.DeleteString(buffer[i]);

 ‍  }

}

‍delete[]buffer;

 

原创粉丝点击