【问题标题】:Word Add-In TabstopsWord 加载项制表位
【发布时间】:2016-01-05 03:10:57
【问题描述】:

您好,我正在寻找任何想法来制作类似的东西:

一些文字--------------------------------------------- ------

这个“------”我必须让按钮点击到行尾。

我的想法是在带有虚线前导符的制表符上制作它,但这会产生问题,因为当我尝试在此之后的文本中使用 ^t 时,它也会产生破折号。不能仅通过键入破折号来完成,因为第二个按钮是清除整个文档中的破折号。

这是我编写的代码,但就像我说的那样不好,因为在文档的任何其他位置的 ^t 都很糟糕

public void DashingSingleLane()
    {
        Word.Range rng = Globals.ThisAddIn.Application.Selection.Range;
        if (rng.Start == rng.End)
        {

            float pageWidth = classDocument.PageSetup.PageWidth - classDocument.PageSetup.LeftMargin - classDocument.PageSetup.RightMargin;


            foreach (Word.Paragraph singleParagraph in rng.Paragraphs)
            {
                if ((singleParagraph.Range.Text != "\r") && (singleParagraph.Range.Text.IndexOf("\t") == -1))
                {
                    singleParagraph.TabStops.Add(pageWidth, Word.WdTabAlignment.wdAlignTabRight, Word.WdTabLeader.wdTabLeaderDashes);
                    Globals.ThisAddIn.Application.Selection.EndKey(Microsoft.Office.Interop.Word.WdUnits.wdLine);
                    Globals.ThisAddIn.Application.Selection.TypeText("\t");

                }

            }
        }
    }

我发现为了让它变得更好,我还需要将 Tabstop 与左对齐准确地放在句子的末尾。类似的东西

singleParagraph.TabStops.AddPosition_in_Point, Word.WdTabAlignment.wdAlignTabLeft, Word.WdTabLeader.wdTabLeaderDashes);

但我不知道如何获得那个位置

我从 2 天开始就在考虑这个问题,但我没有任何好主意。我希望有人能有一些好的想法。

【问题讨论】:

  • 在我回答之前,我需要了解您通常如何在文档中使用 TAB 字符 (\t)。而且我需要了解您如何处理文档中的格式。如果我说您基本上是使用 Selection.TypeText 从左到右和从上到下“键入”内容并且您没有使用 Style 对象,我是否正确?
  • 可能是的,我不确定我是否真的正确理解您的意思,但可能是的。
  • 如果你还没有真正理解这个问题,是的,“可能是的” Word 中最有效和最可靠的是使用 STYLES 来应用格式(包括制表位)。你应用适合情况的风格。在我们继续研究时请记住这一点...
  • 接下来,我需要进一步了解这份文档的结构。您提到需要“制表符”,否则在文本中:“但这会产生问题,因为当我尝试在文本中使用 ^t 之后,它也会产生破折号”。我们需要了解何时何地需要什么样的 Tab。您能否在原始问题中添加一个图表,说明文本块和选项卡并附上简短说明?附加问题:这种结构可以使用 TABLE 来实现吗?
  • 那是什么风格?关于结构,它是普通的文本对齐段落,如果右侧没有任何内容,则单击用户需要获取制表位代替选择到车道的末尾,如果它是右侧文本宽度的距离。它不能通过表格完成,它必须只是文本

标签: c# ms-word visual-studio-addins tabstop word-addins


【解决方案1】:

为了确定当前选择(或范围)的水平位置,您可以使用 Information 属性。这需要 WdInformation 枚举的成员,该成员告诉 Word 要返回什么值。

您可以从页面左侧wdHorizontalPositionRelativeToPage 或从“文本边界”返回信息作为值,这将是“纯文本”中的边距(与表格或其他结构相反) 在具有单列的页面上 - wdHorizontalPositionRelativeToTextBoundary

所以,例如:

//Position is returned in POINTS, which is what TabStop uses
float selPosition = Selection.get_Information(Word.WdInformation.wdHorizontalPositionRelativeToTextBoundary);
singleParagraph.TabStops.Add(selPosition, Word.WdTabAlignment.wdAlignTabRight, Word.WdTabLeader.wdTabLeaderDashes);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多