【问题标题】:How can I make a CListCtrl keep its scrollbar?如何使 CListCtrl 保持其滚动条?
【发布时间】:2008-11-27 13:30:01
【问题描述】:

在 MFC 中,CListBox 具有“禁用不滚动”属性。当您将其设置为 true 时,垂直滚动条始终存在,无论您有多少项目。我怎样才能用 CListCtrl 做同样的事情?

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    标准控件似乎不支持您想要的行为。

    您可以创建足够的条目以使滚动条可见,也可以创建自己的控件以您喜欢的方式实现它。介于两者之间的是 ownerdrawn 样式,但这不适用于滚动条。

    顺便说一句:滚动条在列表控件中始终可见的原因是什么?

    【讨论】:

    • 我正在使用报告视图。我可以将列表控件的宽度设置为列宽的总和,但是当滚动条出现时,它的宽度不足以容纳滚动条。我可以让它更宽,但是没有滚动条,我的标题行末尾有一个丑陋的灰色矩形。
    • 当滚动条出现时动态调整列宽可能最简单?那么下一个问题是,你怎么知道什么时候会发生这种情况?
    【解决方案2】:

    鉴于您正在尝试创建一个漂亮的报表视图,其中列的大小恰好适合 - 没有水平滚动,也没有丑陋的灰色条代替滚动。

    您可以从报告视图的内存中添加最后一列,该列将填充其余空间且无法调整大小。目前我似乎无法在 MSDN 中找到合适的代码,模糊地记得该列的大小为 -1。

    如果您在哪里继续调整列的大小,那么我会在以下情况下这样做: - 应用程序完成向报告添加/删除一组新项目 - 用户调整报告窗口的大小

    还要考虑一下,为什么不让用户根据自己的需要调整列的大小?

    【讨论】:

    • 谢谢你,格雷格。我想我默认有最后一列:我正在谈论的丑陋的灰色框是该列的无标题标题单元格。当我检查一定数量的项目时,我可能会调整列的大小,但如果我调整控件的大小,我将不得不更改该数字。
    • 要回答您的最后一个问题(新鲜的 300 个字符),用户可以拖动列之间的边界,但不能调整列表控件的大小。如果他们拖着柱子到处乱跑,我认为任何审美缺陷都会成为他们自己的问题。
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2018-07-31
    • 2013-02-26
    相关资源
    最近更新 更多