gpt4 book ai didi

c# - 无法选择部分超链接范围

转载 作者:行者123 更新时间:2023-11-30 21:45:53 25 4
gpt4 key购买 nike

根据某些条件,我的插件中的超链接包含 3 种颜色,在使用超链接之前,我使用 documents.Range(start, end); 来更改颜色和字体。

但是一旦添加到超链接颜色就消失了,实际上我不能选择超链接范围的一部分,documents.Range(start, end); 返回所有范围而不是它的一部分。

最佳答案

格式化部分超链接是可行的。然而,这并不简单。超链接实现为Word字段,即由一个字段代码和一个显示值组成(实际上是一种特殊字段,并不是所有的显示文本等相关信息都被存储在字段代码中)。

您可以通过按 Alt+F9 显示域代码(并通过再次按相同的快捷键再次隐藏它)。

当您设置范围的开始和结束以应用格式时,您需要考虑将字段代码添加到显示文本之前(尽管默认情况下您在查看 Range 时不会看到字段代码.文本).例如,如果您的超链接从偏移量 100 开始,那么显示文本实际上将从偏移量 100 + 域代码长度开始。

此示例 VBA 宏解释了如何检索字段代码的长度并计算正确的偏移量:

Sub FormatHyperlink()
' set up a sample document
Dim doc As Document
Set doc = Application.Documents.Add

Selection.TypeText "This is a hyperlink to the "
Selection.Collapse wdCollapseEnd
Selection.Hyperlinks.Add Selection.Range, _
"https://stackoverflow.com/", , , "greatest webpage"
Selection.TypeText " ever."

' retrieve the hyperlink
Dim lnk As Hyperlink
Set lnk = ActiveDocument.Hyperlinks(1)

' retrieve the field code of the hyperlink
Dim rng As Range
Set rng = lnk.Range.Duplicate
rng.TextRetrievalMode.IncludeFieldCodes = True

Dim fieldCodeLength As Integer
fieldCodeLength = Len(rng.Text)

rng.TextRetrievalMode.IncludeFieldCodes = False

' format the first word of the display text with a different color
rng.Start = rng.Start + fieldCodeLength + 1
rng.Collapse
rng.MoveEnd wdWord, 1
rng.Font.ColorIndex = wdRed

' format the rest of the hyperlink with another color
Set rng = lnk.Range.Duplicate
rng.Start = rng.Start + fieldCodeLength + 1
rng.MoveStart wdWord, 1
rng.Font.ColorIndex = wdDarkBlue ' or use rng.Font.TextColor = RGB(x,x,x)
End Sub

关于c# - 无法选择部分超链接范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39764946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com