您好,我正在寻找任何想法来制作类似的东西:
Some Text --------------------------------------------- ------
这" ------"我必须按下按钮点击到行尾。
我的想法是在带有虚线的领导者的tabstop上制作它,但它会产生问题,因为当我试图在文本中使用^ 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天开始思考这个问题而且我没有任何好主意。我希望有人会有一些好的想法。
答案 0 :(得分: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);