代码之家  ›  专栏  ›  技术社区  ›  P.Bochenek

Word加载项制表符

  •  -1
  • P.Bochenek  · 技术社区  · 9 年前

    嗨,我正在寻找任何制作这样东西的想法:

    一些文本---------------------------------------------------

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

    我的想法是用虚线标头在tabstop上显示,但这会产生问题,因为当我试图在此之后在文本中使用^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);
    

    但我不知道该如何找到合适的位置

    我从两天开始就在思考这个问题,我没有什么好主意。我希望有人能好好想想。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Cindy Meister Prabhuprasad NG    9 年前

    为了确定当前选择(或范围)的水平位置,可以使用“信息”属性。这需要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);