2010-05-19 13 views
7

हाय मैं विजुअल स्टूडियो के लिए एक एक्सटेंशन बना रहा हूं और मुझे जिस विशिष्ट चीज की आवश्यकता है उसे आगे की प्रक्रिया के लिए संपादक विंडो का चयनित टेक्स्ट प्राप्त करना है। किसी को पता है कि इंटरफ़ेस या सेवा में यह क्या है? पहले मुझे खुले समाधान के पथ का पता लगाने की आवश्यकता है और इसके लिए मैं एक ऐसी सेवा मांगता हूं जो IVsSolution लागू करता है, इसलिए इस अन्य समस्या के लिए मुझे कुछ ऐसी चीज होनी चाहिए जो मुझे यह जानकारी प्रदान करे।संपादक विंडो का चयनित पाठ प्राप्त करें .. विज़ुअल स्टूडियो एक्सटेंशन

उत्तर

3

OnlayoutChanged के अंदर निम्नलिखित कोड कोड के साथ एक संदेश पॉप अप होगा चयनित:

if (_view.Selection.IsEmpty) 
     { 
      return; 
     } 
     else 
     { 
      string selectedText = _view.Selection.StreamSelectionSpan.GetText(); 

      MessageBox.Show(selectedText); 
     } 
कहीं और

सिर्फ viewhost और प्रकार के अपने _view (IWpfTextView) प्राप्त

10

स्पष्ट करने के लिए " स्टेकर के जवाब में बस व्यूहोस्ट प्राप्त करें, यहां एक पूर्ण स्टूडियो 2010 VSPackage में कहीं भी, जहां से आप वर्तमान संपादक दृश्य प्राप्त कर सकते हैं, और वहां से ITextSelection, यहां से पूर्ण कोड है। विशेष रूप से, मैंने मेनू कमांड कॉलबैक से वर्तमान चयन प्राप्त करने के लिए इसका इस्तेमाल किया।

IWpfTextViewHost GetCurrentViewHost() 
{ 
    // code to get access to the editor's currently selected text cribbed from 
    // http://msdn.microsoft.com/en-us/library/dd884850.aspx 
    IVsTextManager txtMgr = (IVsTextManager)GetService(typeof(SVsTextManager)); 
    IVsTextView vTextView = null; 
    int mustHaveFocus = 1; 
    txtMgr.GetActiveView(mustHaveFocus, null, out vTextView); 
    IVsUserData userData = vTextView as IVsUserData; 
    if (userData == null) 
    { 
     return null; 
    } 
    else 
    { 
     IWpfTextViewHost viewHost; 
     object holder; 
     Guid guidViewHost = DefGuidList.guidIWpfTextViewHost; 
     userData.GetData(ref guidViewHost, out holder); 
     viewHost = (IWpfTextViewHost)holder; 
     return viewHost; 
    } 
} 


/// Given an IWpfTextViewHost representing the currently selected editor pane, 
/// return the ITextDocument for that view. That's useful for learning things 
/// like the filename of the document, its creation date, and so on. 
ITextDocument GetTextDocumentForView(IWpfTextViewHost viewHost) 
{ 
    ITextDocument document; 
    viewHost.TextView.TextDataModel.DocumentBuffer.Properties.TryGetProperty(typeof(ITextDocument), out document); 
    return document; 
} 

/// Get the current editor selection 
ITextSelection GetSelection(IWpfTextViewHost viewHost) 
{ 
    return viewHost.TextView.Selection; 
} 

यहाँ IWpfTextViewHost, ITextDocument, और ITextSelection के लिए MSDN के डॉक्स है।

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