【问题标题】:Will text fit in GTK# TextView without scroll bar文本是否适合 GTK# TextView 没有滚动条
【发布时间】:2009-06-30 11:17:02
【问题描述】:

我有一个 GTK# 文本视图,其中打开了自动换行和滚动条。我知道不会显示水平滚动条,因为文字会换行。

我想添加一些文本,但在添加之前我想确定文本是否适合而不需要垂直滚动条。

如果这意味着文本视图需要垂直滚动条,我不想添加文本。

我该怎么做?

【问题讨论】:

    标签: c# mono gtk#


    【解决方案1】:

    我不知道有什么方法可以在不实际更新文本的情况下测量 TextView 的内容。它是一个复杂的文本布局小部件,可以处理格式化文本、图像等。插入文本可能会相当大地改变布局,因此您无法“预测”一些新文本将如何改变大小而不实际修改缓冲区并重新计算其布局.

    如果您解释为什么需要此功能,建议解决方案会更容易。

    例如,如果您只需要知道添加文本后视图何时会有滚动条,您可以使用滚动调整 - TextView 是一个“可滚动”小部件,即它的布局空间是虚拟化,并由父 ScrolledWindow 通过包含范围、页面大小、滚动增量大小等的“调整”对象进行操作。您可以通过从 ScrolledWindow 访问它们并订阅它们的更改事件来检测它们何时更改。

    【讨论】:

    • 如果文本视图需要垂直滚动条,我不想添加文本。
    • 我想你可以添加它,如果它导致滚动条,则将其删除。
    • 是否可以做到这一点而不会导致闪烁。我可以关闭在屏幕上绘图,这样用户就不会看到滚动条出现然后消失。
    • AFAIK GTK 不会立即重绘,因此如果您立即删除文本,滚动条可能不会显示。试试看。另一个技巧可能是完全避免使用 ScrolledWindow。我不确定这是否可能——你肯定不得不伪造一些东西,比如将虚拟调整传递给 TextView。我很好奇你用这个做什么。如果您的格式要求很少,您可以直接使用 Pango 编写自定义标签小部件(我自己已经完成了)。这样你就可以完全控制一切。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2014-03-16
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多