C#控制定位Word光标位置

发布时间:2019-12-02 22:21:30.19编辑:佚名阅读(410)

1、上下左右移动光标位

private void moveLeft()
{
    object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdWord;
    object moveCount = 1;
    object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
    thisDocument.Application.Selection.MoveLeft(ref moveUnit, ref moveCount, ref MissingValue);
}
private void moveRight()
{
    if(selection==null||selection!=document.Application.Selection)
        selection=document.Application.Selection;
    object dummy=System.Reflection.Missing.Value;
    object count=1;
    object Unit=Word.WdUnits.wdCharacter;
    selection.MoveRight(ref Unit,ref count,ref dummy);
}

2、取得当前光标位

public void GetCursor()
{
    if(selection==null||selection!=document.Application.Selection)
        selection=document.Application.Selection;
    object a=selection.get_Information(Word.WdInformation.wdFirstCharacterLineNumber);
    object b=selection.get_Information(Word.WdInformation.wdFirstCharacterColumnNumber);
    object c=selection.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber);
    MessageBox.Show(a.ToString()+”行,”+b.ToString()+”列,”+c.ToString()+”页”);
}

3、定位到指定行或相对行

/// <summary>
/// 定位到指定行
/// </summary>
/// <param name=”lineNum”>行号</param>
private void gotoAbsolutLine(int lineNum)
{
    if(selection==null||selection!=document.Application.Selection)
        selection=document.Application.Selection;
    object dummy=System.Reflection.Missing.Value;
    object what=Word.WdGoToItem.wdGoToLine;
    object which=Word.WdGoToDirection.wdGoToFirst;
    object count=lineNum;
    selection.GoTo(ref what,ref which,ref count,ref dummy);
}
/// <summary>
/// 定位到相对行,例如+4
/// </summary>
/// <param name=”lineNum”>行数</param>
private void gotoOppositeLine(int lineNum)
{
    if(selection==null||selection!=document.Application.Selection)
        selection=document.Application.Selection;
    object dummy=System.Reflection.Missing.Value;
    object what=Word.WdGoToItem.wdGoToLine;
    object which;
    if(lineNum<0)
        which=Word.WdGoToDirection.wdGoToPrevious;
    else
        which=Word.WdGoToDirection.wdGoToNext;
    object count=Math.Abs(lineNum);
    selection.GoTo(ref what,ref which,ref count,ref dummy);
}

4、定位到文档最后一行

private void gotoLastLine(Document thisDocument)
{
    object dummy = System.Reflection.Missing.Value;
    object what = WdGoToItem.wdGoToLine;
    object which = WdGoToDirection.wdGoToLast;
    object count = 99999999;
    thisDocument.Application.Selection.GoTo(ref what, ref which, ref count, ref dummy);
}

5、定位到第一个字符

private void gotoFirstCharacter()
{
    if(selection==null||selection!=document.Application.Selection)
        selection=document.Application.Selection;
    int oldLine=0;
    gotoAbsolutLine(1);
    object a=selection.get_Information(Word.WdInformation.wdFirstCharacterLineNumber);//得到当前行号
    while(oldLine!=int.Parse(a.ToString()))//一直按右键,直到光标不再往下了为止
    {
        oldLine++;
        moveRight();
        a=selection.get_Information(Word.WdInformation.wdFirstCharacterLineNumber);
    }
    gotoAbsolutLine(int.Parse(a.ToString()));
}

6、定位到最后一个字符

public void gotoLastCharacter()
{
    if(selection==null||selection!=document.Application.Selection)
        selection=document.Application.Selection;
    gotoLastLine();
    object dummy=System.Reflection.Missing.Value;
    object count=99999999;
    object Unit=Word.WdUnits.wdCharacter;
    selection.MoveRight(ref Unit,ref count,ref dummy);
}

7、 取得行、列、页信息

public string WordGetRCP()
{
    selection=document.Application.Selection;//wd.Selection;
    object a=selection.get_Information(Word.WdInformation.wdFirstCharacterLineNumber);
    object b=selection.get_Information(Word.WdInformation.wdFirstCharacterColumnNumber);
    object c=selection.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber);
    return a.ToString()+”,”+b.ToString()+”,”+c.ToString();
}


  关键字:C#控制定位Word光标位置


鼓掌

0

正能量

0

0

呵呵

0


评论区