You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BCG虚拟网格CBCGPGridCtrl如何定位到指定行?

解决CBCGPGridCtrl虚拟模式下定位到指定行的问题

在虚拟模式下,SetScrollPos或SetCurSel无法直接触发可视区域的正确滚动,因为虚拟模式的网格控件需要结合自身布局逻辑更新可视区域。正确实现方式如下:

  • 方法一:通过计算偏移量手动滚动
    先计算目标行对应的垂直滚动偏移,再调用控件内部方法更新并强制重绘:

    // 计算目标行的总垂直偏移
    int nTotalOffset = 0;
    for (int i = 0; i < gotoPosition; ++i)
    {
        nTotalOffset += m_grid.GetRowHeight(i);
    }
    // 设置滚动偏移并触发重绘
    m_grid.SetScrollOffset(nTotalOffset, SB_VERT);
    m_grid.RedrawWindow();
    
  • 方法二:使用EnsureVisible方法(更简便)
    虚拟模式下,控件的EnsureVisible方法会自动计算滚动位置,确保目标行进入可视区域:

    // 参数依次为目标行索引、列索引、是否确保完全可见
    m_grid.EnsureVisible(gotoPosition, 0, TRUE);
    

如果需要同步选中目标行,可在滚动完成后调用SetCurSel:

m_grid.SetCurSel(gotoPosition);

内容的提问来源于stack exchange,提问作者Federico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:25:28