-1

嗨,我正在寻找任何想法来做这样的事情:

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

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

我的想法是用虚线领导在制表位上制作它,但这会产生问题,因为当我尝试在此之后在文本中使用 ^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 天开始就在考虑这个问题,但我没有任何好主意。我希望有人会有一些好的想法。

4

1 回答 1

0

为了确定当前选择(或范围)的水平位置,您可以使用 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);
于 2016-01-11T18:08:18.983 回答