我不得不用CCheckListBox替换旧的MFCSharpGrid控件。
现在,在显示列表框的垂直滚动条之后,它似乎将正确的事件(向上/向下行和向上/向下页)发送到列表的客户端区域,并且它允许鼠标滚轮滚动,这在隐藏滚动条时不可用。
但是,滚动条本身不会更新:当滚动客户端区域时,拇指不会移动(甚至在响应滚动条的滚动时也不会移动),并且拇指的大小与页面大小不成比例。
列表框的创建大致如下:
m_grid.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1);
字符串被迭代地添加,然后我们请求像这样显示滚动条:
m_grid.ShowScrollBar(SB_VERT, TRUE);
尝试设置最小/最大/页面大小的SCROLLINFO没有解决位置更新问题。
我在这里错过了什么?
您不希望手动使用ShowScrollBar
。删除它,并创建WS_VSCROLL
样式的列表框。
m_grid.Create(WS_VSCROLL | LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1);
这样当内容超过控件的长度时,就会自动得到一个垂直滚动条