2009-09-04 10 views
1

私はコードファイル内の文字列のスペースを下線で置き換えるマクロを書いています。文字列の先頭と末尾をVirtualPointのインスタンスとして見つけることができました。今度は最初のVirtualPointから2番目のものまで選択しようとしています。そして私はそれを把握することはできません。VS 2010マクロ - ここからそこに選択

私はマクロを実行すると私にその値を教えてくれるので、私はMessageBox.Showを使用しているので、VirtualPointが正しいことを知っています。私はちょうどTextSelectionを最初から2番目に設定する正しいコマンドを知らない。私はこれを試しました:

selection.MoveToPoint(firstVirtualPoint) 
selection.MoveToPoint(secondVirtualPoint, True) 

これはうまくいくはずですが、そうではありません。カーソルは行末まで移動します(私が知る限り)。

誰かがこれを行う正しいコマンドを知っていますか?

答えて

2

私はあきらめた後、突然それが私に当たってしまいます。おそらく、これは他の誰かを助けるでしょう。

コードのより完全なサンプルはこれです:

Dim selection As TextSelection = 
    CType(DTE.ActiveDocument.Selection, TextSelection) 
selection.StartOfLine() 

selection.FindText("some string at start") 
Dim pointAfterStart = selection.BottomPoint 

selection.FindText("some string at end") 
Dim pointBeforeEnd = selection.TopPoint 

selection.MoveToPoint(pointAfterIt) 
selection.MoveToPoint(pointBeforeLambda, True) 

アイデアは、最初のテキスト、そしてエンディングテキストを検索し、その後の間ですべてを選択することです。私がデバッガで見つけたのは、pointAfterStartとpointBeforeEndの値がで、に変わったということでした。おそらく名前によって騙された(System.Drawing.Pointが構造体であるため)、私は彼らが現在の選択位置を指している参照であることを認識していませんでした。

私はそれをこのように解決:選択が後に移動したとき、彼らは変化しなかったよう

selection.FindText("It ") 
Dim pointAfterIt = selection.BottomPoint.CreateEditPoint 

selection.FindText(" =() =>") 
Dim pointBeforeLambda = selection.TopPoint.CreateEditPoint 

これは、選択ポイントのコピーを作りました。

関連する問題