用VC怎么实现把列表框中的项移到另一个列表框中?

lanwhale111 2008-12-06 01:12:20
如下图所示,有两个列表框,如果选中一项或几项就通过>>按钮把它移动到另一个列表框中,然后还可以通过<<按钮还原。
新手求教,希望vc高手们能够不吝赐教,如果能把过程说的详细点更是万分之不甚感激。
...全文
187 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tinary3v0 2008-12-06
  • 打赏
  • 举报
回复
首先设定两个ListBox为MultiSelect属性,
并用ClassWizard添加两个Control类型的变量,左侧为m_LT1;右侧为m_LT2;
然后给左转右(上面的按钮)添加OnClick事件响应函数OnInsert
然后给右转左(下面的按钮)添加OnClick事件响应函数OnDelete
void CIrregularDlg::OnInsert() 
{
int nm = m_LT1.GetSelCount();

if( nm < 1 ) return;//判断是否有内容选中

CArray< int,int > arySel;

arySel.SetSize( nm );
m_LT1.GetSelItems(nm, arySel.GetData()); //取得选中的所有项的序号

int k2Nm = m_LT2.GetCount();
for( int ik = 0; ik < nm; ik ++ )
{
CString IxTx;
m_LT1.GetText( arySel[ik], IxTx );//取得某一项的文本
m_LT2.InsertString(k2Nm,IxTx);//添加到右侧栏中
k2Nm++;//右侧序号加1
}
for( int ih = nm-1; ih > -1; ih-- ) //反向循环从左侧框中清理掉已经进入右侧框的内容
{
m_LT1.DeleteString(arySel[ih]);
}

int km = 0;
while(km < arySel.GetSize()) //清理CArray类型内存防止内存泄露
{
arySel.RemoveAt(km);
}
arySel.RemoveAll();
}

void CIrregularDlg::OnDelete()
{
int nm = m_LT2.GetSelCount();

if( nm < 1 ) return;

CArray< int,int > arySel;

arySel.SetSize( nm );
m_LT2.GetSelItems(nm, arySel.GetData());

int k2Nm = m_LT1.GetCount();
for( int ik = 0; ik < nm; ik ++ )
{
CString IxTx;
m_LT2.GetText( arySel[ik], IxTx );
m_LT1.InsertString(k2Nm,IxTx);
k2Nm++;
}
for( int ih = nm-1; ih > -1; ih-- )
{
m_LT2.DeleteString(arySel[ih]);
}

int km = 0;
while(km < arySel.GetSize())
{
arySel.RemoveAt(km);
}
arySel.RemoveAll();
}
feng1976 2008-12-06
  • 打赏
  • 举报
回复
从左边取出选中的Index int GetSelItems( int nMaxItems, LPINT rgIndex )

循环去左边的文本 GetText

插入右边 AddString

插入的时候要检查是否已经存在;

删除 DeleteString
whbmails2 2008-12-06
  • 打赏
  • 举报
回复
把里面的选择的数据取出来,然后添加到右边的列表框里,这个方法最笨最简单了。如:
for(int i=0; i<m_list.GetItemCount(); i++)
{
if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
{
//获取这个Item值,添加到右边列表框里。
//delete 这个item 从列表中,删的时候要注意用法,这里仅仅是个列子
}
}

//反之亦然,
ilovedrv 2008-12-06
  • 打赏
  • 举报
回复

这个就是你要的

Include/Exclude List Boxes

http://www.codeproject.com/KB/combobox/inclexcllb.aspx

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧