Visual Studio 使用C#将光标移动到MsWord中文本的末尾?

gywdnpxw  于 2023-01-17  发布在  C#
关注(0)|答案(6)|浏览(291)

这个问题可能听起来很简单,但我无法找到任何解决方案。我正在尝试做的是移动我的光标位置在MsWord的文本结束。我的代码如下

object StartPos = 0;
  object Endpos = 1;
  Microsoft.Office.Interop.Word.Range rng= oDoc.Range(ref StartPos, ref Endpos);
  rng.Text = "This is first line Word from C#";

输出为

I这是C#中的第一行字

然而我想要这样东西
这是第一行来自C#I的字
谢谢大家

fnx2tebb

fnx2tebb1#

谢谢大家的回应,我似乎找到了一个简单的解决方案。我尝试修改哈桑的解决方案。可能有一个更简单的方法,但到目前为止,我已经找到了这个

object NewEndPos = rng.StoryLength-1;
        rng = oDoc.Range(ref NewEndPos, ref NewEndPos);
        rng.Select();
inb24sb2

inb24sb22#

这个怎么样?这和按Ctrl-Shift-End是一样的。注意word是word应用程序,而不是文档。假设已经选择了正确的活动文档。

word.Selection.EndKey(WdUnits.wdStory);
z18hc3ub

z18hc3ub3#

rng= oDoc.Range(ref Endpos, ref Endpos);
rng.Select();
ttp71kqs

ttp71kqs4#

Similar question - Position cursor at start/end of Word document
这个答案更详细地介绍了whichwhat,答案是c#和vb混合在一起的,所以我在这里包括了 * 另一个答案 *,它使用了一种稍微不同的方法进入文档的最后一部分。
我的意见是:

//vb does this kind of thing for them
//but in c# we need an object we can pretend is null
object oMissing = System.Reflection.Missing.Value;

//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc; //whenever i read this i think 'hodor'
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
  ref oMissing, ref oMissing);

object StartPos = 0;
object Endpos = 1;

Microsoft.Office.Interop.Word.Range rng = oDoc.Range(ref StartPos, ref Endpos);
rng.Text = "This is first line Word from C#";

//object what = Word.WdGoToItem.wdGoToLine;
//I couldn't get wdGoToLine to work but wdGoToPercent was happy
object what = Word.WdGoToItem.wdGoToPercent;
object which = Word.WdGoToDirection.wdGoToLast;

oWord.Selection.GoTo(ref what, ref which, oMissing, oMissing);

这个方法稍有不同,因为它没有告诉Word将光标移到最后一行,而是文档的最后一个 * 百分比 *,我将不得不假设它是100。在一行文档中,这将是一行的结尾,但如果光标在第一行(开头),我们告诉Word后藤最后一行,什么也不会发生:我们已经在那里了,在“最后一行”的“开头”。

juud5qan

juud5qan5#

请尝试以下方法:

oDoc.GoTo(ref what, ref which, ref missing, ref missing);
rfbsl7qr

rfbsl7qr6#

你唯一需要做的就是访问Word文档并找到当前范围。然后你要找到光标的当前位置。你需要使用下面的代码:

var selection = Document.Application.Resource.Range;
object position = selection.Resource.StoryLength - 1;
var range = Document.Range(ref position, ref position);
range.Select();

现在,光标位于其位置的末端。

相关问题