2011-05-31 8 views
5

मैं टूलविंडो के फोकस में हूं। TreeView नोड पर dobleclick करके, कर्सर को खोले गए स्रोत कोड दस्तावेज़ के भीतर किसी विशेष पंक्ति पर जाना होता है। मैं इस तरह Edit.GoTo लाइन आदेश को फोन करके इस मुद्दे को हल:विजुअल स्टूडियो एक्सटेंसिबिलिटी: टेक्स्ट डॉक्यूमेंट में लाइन पर जाएं

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

हालांकि मैं इससे काफी convinient के रूप में मैं toolwindow का ध्यान खोना नहीं कर रहा हूँ। ऑटोमेशन एपीआई का उपयोग कर लाइन पर जाने का कोई और तरीका है?

+0

क्या आप अपने कमांड के बाद फोकस को टूल विंडो पर वापस स्विच कर सकते हैं – Cilvic

उत्तर

4

उपयोग IViewScroller.EnsureSpanVisible(SnapshotSpan span, EnsureSpanVisibleOptions options) (http://msdn.microsoft.com/en-us/library/dd886036.aspx)

अंतराल बनाने के लिए, उपयोग करें:

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)); 

और अवधि के लिए स्क्रॉल करने के लिए:

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

view कहाँ IWpfTextView द्वारा प्रदान की है अपने adorner (IWpfTextViewCreationListener)

संबंधित मुद्दे