2011-05-31 32 views
5

satırına taşıyın ToolWindow'un odak noktasındayım. Bir TreeView düğümünde dobleclick yaparak, imlecin açılan kaynak kod belgesindeki belirli bir satıra taşınması gerekir. Böyle Edit.GoTo Hattı komutunu çağırarak bu sorunu çözdü: Ben toolwindow odağını kaybeder olarak Visual Studio Genişletilebilirlik: Bir TextDocument

var commandName = "Edit.GoTo " + lineNumber; 
_dte.ExecuteCommand(commandName); 

Ancak ben bu konuda oldukça rahat değilim. Otomasyon API'sini kullanarak bir satıra taşınmanın başka bir yolu var mı?

+0

Odağı komutunuzdan sonra araç penceresine geri döndürür müsün – Cilvic

cevap

4

Kullanım IViewScroller.EnsureSpanVisible(SnapshotSpan span, EnsureSpanVisibleOptions options) (http://msdn.microsoft.com/en-us/library/dd886036.aspx)

Bir yayılma oluşturmak için kullanımı:

var lines = view.VisualSnapshot.Lines; 

var startLine = lines.FirstOrDefault(a => a.LineNumber == fromLine - 1); 
var endLine = lines.FirstOrDefault(a => a.LineNumber == toLine - 1); 

if (startLine == null || endLine == null) 
    return; 

var startPosition = startLine.Start; 
var endPosition = endLine.Start; 

var span = new SnapshotSpan(view.TextSnapshot, Span.FromBounds(startPosition, endPosition)); 

Ve yayılma gitmek için:

layer.TextView.ViewScroller.EnsureSpanVisible(span, EnsureSpanVisibleOptions.AlwaysCenter); 

view tarafından sağlanan IWpfTextView olduğu yerlerde senin adorner (IWpfTextViewCreationListener)