在使用ListCtrl(report模式)时,向其中添加Item,添加完成后如果数目稍多一点是看不到这个Item的,除非是手动把滚动条拉到最后才行。
是否可以有办法实现自动滚动到最下面一行,并把最后一条记录(Item)选中?
请大侠指点,谢谢!

解决方案 »

  1.   

    int index;
    m_list.SetFocus();
    m_list.SetItemState(index, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
      

  2.   


    int index = m_jiaoSeList.GetItemCount();  //得到当前所有的项的总数
    list.SetItemState(index-1,   /*注意这里要-1,因为从0开始的*/
                      LVIS_SELECTED|LVIS_FOCUSED, 
                      LVIS_SELECTED|LVIS_FOCUSED);  //设定焦点
    CSize s(0, 20000); //这是要滚动的尺寸,0为横滚动条, 20000为竖滚动跳。这里横跳不滚动,为满足你的要求值滚动竖滚动条,20000这个值,随便起只要足够大就可以了,如果你的列表框中的项非常大的话,就可以把这个值在增大,如果少的话可以相应的减少,横滚动条同。
    list.Scroll(s); //实现滚动。
    完。给分
      

  3.   

    m_SMSList.EnsureVisible(nCount-1, FALSE);
      

  4.   

    功能实现了,非常感谢各位!laiyiling(最熟悉的陌生人)的方法简单,实现了选中;zhangnanonnet(鱼欢)的方法最为简捷,实现了可见;tfrist(tfrist)的方法虽然麻烦一些,可是两个功能都能实现了;顺便再请教tfirst一个问题,我按照您的方法实现了选中和可见,美中不足的是它把每一个Item都变成了选中状态,而我希望的是只将最后一行选中,是不是有个unselect的功能把前面一个取消选中,再把新的Item实现选中?
    感谢您了!
      

  5.   

    to FirstPac:
       如果你的LIST不要求,一次可以多个ITEM被选中的话,最简单的解决办法是,
    在对话编辑器中直接更改,list的属性。 在Styles选项卡中将Single selection选中即可。