题设条件:两个CListBox,分别为A,B。A中假设有数据(a,b,c,d)。
A,B中间有一按钮使A中的数据单个进入B中。
为了实现将A中的一条数据进入B中(代码未附),并且A中的光标自动下移,我编写代码如下:void bnMoveCursor(CListBox & clb){
    int k=clb.GetCurSel();
    if(k==-1){//没有选中任何一条数据
        clb.SetCurSel(0);//选中ClistBox 中首条数据
    }else{
        clb.SetCurSel(++k);
    }
}这样的情况下,在为选中任何一条数据的情况下,A中数据可以很顺利进入B中。但是,如果,在A中手动选择一条数据后,比如选择数据a,执行之后,a不会进入B中,而光标下移,b进入B中。我知道,这是由于(++K)的缘故。但是,不知如何修改。请各位帮忙。
如果各位还有什么好的办法实现的话,请不吝指教。

解决方案 »

  1.   

    囧。题目都不要清楚, 你的A在什么地方操作的啊
    把clb.SetCurSel(++k);换成clb.SetCurSel(k++);试试
      

  2.   

    对A增加LBN_SELCHANGE消息处理函数,在其中根据现在的选中情况设置B的当前选择
      

  3.   


    void CListboxDlg::OnButton1() 
    {
    int k=m_list1.GetCurSel();
        if(k==-1){//没有选中任何一条数据
            m_list1.SetCurSel(0);//选中ClistBox 中首条数据
        }else{
    CString str;
    m_list1.GetText(k,str);
    m_list2.AddString(str);
            m_list1.SetCurSel(++k);
        }
    }这样的代码没问题 手动选择也可以
      

  4.   

     滚动条 最下方
       /*int count = 0;
    count = m_list.GetCount();
    m_list.SetCurSel(count - 1);*/
    ::SendMessage(m_list.m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_BOTTOM,0),NULL);
      

  5.   

    移动条目的代码如下:void bnClickButton(CListBox & arg1,CListBox & arg2){
    CString   strTemp; 
    arg1.GetText(arg1.GetCurSel(),strTemp);
    AfxMessageBox(strTemp);
    if((arg2.FindString(-1,strTemp)==-1)){
    arg2.AddString(strTemp);
    }
    else{

    }
    }
    哪里出问题了呢?
      

  6.   

    bnMoveCursor(CListBox & clb)这个方法先执行
      

  7.   

    调换顺序试试
    你在bnMoveCursor中移动了光标
    当然bnClickButton时就出问题了
      

  8.   

    如果移动顺序的话, bnClickButton()中的GetText()方法便会报错的。
    所以移动不行啊。
      

  9.   

    的确是逻辑出了问题,到后来代码改成了 int k=m_listA.GetCurSel();
    if(k==-1){
    m_listA.SetCurSel(0);
    }else{
    bnClickButton(m_listA,m_listB);
    m_listA.SetCurSel(++k);
    }问题基本解决了。