C# - 如何在Word中取消选择表格单元格

时间:2016-05-30 08:31:24

标签: c# ms-word vsto office-interop

我目前正试图产生Selection.SelectCell方法的相反效果。

这是我的代码:

public void getCellContent()
{
    Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection;

    currentSelection.SelectCell();
    newKey = currentSelection.Text; //global variable
    currentSelection.Collapse();
}

折叠方法将光标设置为单元格的开头。 即使我将Collapse direction参数设置为结尾,光标也会转到下一个单元格。

我的目的是每次输入单词表格单元格时都能保存单词表格单元格的内容(无需更改单元格)。

最好的问候,

Chefty。

1 个答案:

答案 0 :(得分:1)

您将无法将光标设置在Word表格单元格内的文本末尾。不是没有从一个小区移动到另一个小区。

唯一的方法就是使用以下代码:

currentSelection.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
currentSelection.MoveLeft(Word.WdUnits.wdCharacter, 1);

不要这样做。鉴于每次键入一个字符时都会调用它,因此它不会快速有效,并且最终会在下一个单元格中键入字符。

当您自己更改选择时,您应该只保存一次单元格的内容。键入第一个字符时,请使用以下代码:

currentCell = currentSelection.Range.Cells[1]; //index always starts at 1, not 0

当你点击另一个单元格时(你可能必须使用Win32 API来捕获这样的事件),不要忘记这样做:

currentCell.Select();
string currentCellContent = currentSelection.Text;

之后,您仍然最终选择了一个单元格,仍然需要使用currentSelection.Collapse(),但至少您获得了单元格的内容,并且每次编辑都执行一次保存。