2016-01-05 4 views
-1

Привет Я ищу любую идею, чтобы сделать что-то вроде этого:Word Add-In Tabstops

Некоторые тексты ---------------------- -----------------------------

Это «------» Я должен сделать на кнопке конец строки.

Моя идея состояла в том, чтобы сделать это на 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); 

Но я не знаю, как получить эту позицию в точке

Я думаю о том, что проблемы с 2-х дней, и я не есть хорошая идея. Надеюсь, кто-то подумает.

+0

Прежде чем я могу ответить мне нужно понять, как вы используете символ табуляции (\ т), как правило, в документе. И мне нужно понять, как вы обрабатываете форматирование в документе. Я был бы прав, если бы сказал, что вы в основном «набираете» контент слева-направо и сверху вниз с помощью Selection.TypeText и что вы НЕ используете объект Style? –

+0

Возможно, да, я не уверен, правильно ли я понимаю, что вы имеете в виду, но, вероятно, да. –

+0

Если вы действительно не понимаете вопрос тогда, да, «возможно, да» Наиболее эффективным и надежным в Word является работа с STYLES для применения форматирования (включая табуляторы). Вы применяете стиль, соответствующий ситуации. Имейте это в виду, продолжая исследование ... –

ответ

0

Чтобы определить горизонтальное положение текущего выбора (или диапазона), вы можете использовать свойство «Информация». Это берет член перечисления 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);