2011-01-31 13 views
5

में त्वरित जानकारी द्वारा प्रोग्राम की गई जानकारी को प्रोग्रामेटिक रूप से कैसे प्राप्त किया जाए, जब मैंने कुछ कोड तत्व पर माउस को स्थानांतरित किया है तो Quick Info में प्रदर्शित किए गए मेरे सी # एडिन विजुअल स्टूडियो एक्सटेंशन से प्राप्त करने के लिए एक विधि के बिना खोज की गई।विजुअल स्टूडियो

मुझे उम्मीद है कि ऐसा करने का एक शानदार तरीका है।

धन्यवाद।

उत्तर

-1

Quickview तरीकों और गुण है कि मौजूद है और इसलिए एक ही समाधान प्रतिबिंब का उपयोग करने के लिए इस जानकारी प्राप्त करने के लिए किया जाएगा वर्ग पर जाया जा सकता है पता चलता है।

// के तरीकों हो जाता वर्ग MyClass MethodInfo [] methodInfos = typeof (MyClass) .GetMethods (BindingFlags.Public | BindingFlags.Static);

+1

धन्यवाद लेकिन क्या मैं चाहता हूँ एक वर्ग के सभी तरीकों को सूचीबद्ध करने के लिए, लेकिन quickview की जानकारी पाएं और जब मैं एक कोड तत्व पर माउस ले जाते हैं मुझे नहीं पता था कि किस वर्ग में इस कोड को तत्व अपने समाधान का उपयोग करने के लिए मौजूद नहीं है । – rodi

0

मैं एक कोड उदाहरण की जरूरत नहीं है, लेकिन ViewFilter.HandleQuickInfo तरीका है जिसके चरणों आपको बस इतना करना की तरह लगता है के लिए निम्नलिखित दस्तावेज़ में पाया।

आधार विधि IVsTextView वस्तु ViewFilter निर्माता के लिए पारित वर्तमान कैरट स्थिति प्राप्त करने के लिए पर GetCaretPos प्रणाली को बुलाती है। यह स्थिति तब Source वस्तु (ViewFilter निर्माता में CodeWindowManager वस्तु से प्राप्त) पर OnSyncQuickInfo (IVsTextView, Int32, Int32) विधि को पारित कर दिया है। यदि OnSyncQuickInfo (IVsTextView, Int32, Int32) कोई टेक्स्ट देता है, तो डीबगिंग सक्रिय होने पर डीबगर से कोई अतिरिक्त जानकारी प्राप्त करने के लिए अगली विधि GetFullDataTipText विधि को कॉल करती है। अंत में, टूल टिप को प्रदर्शित करने के लिए एक नया (या वर्तमान) TextTipData ऑब्जेक्ट का उपयोग किया जाता है।

स्रोत: ViewFilter.HandleQuickInfo

संपादित करें:

आप IVsTextManager का उपयोग कर मौजूदा IVsTextView प्राप्त कर सकते हैं।

var textManager = Resolve.Service<IVsTextManager, SVsTextManager>(); 

IVsTextView textView; 
ErrorHandler.ThrowOnFailure(textManager.GetActiveView(fMustHaveFocus: 1, pBuffer: null, ppView: out textView)); 

Int32 caretRow, caretCol; 
ErrorHandler.ThrowOnFailure(textView.GetCaretPos(out caretRow, out caretCol)); 

हालांकि, मैं वहाँ फँस गया हूँ, और IVsTextView.UpdateTipWindow के साथ कुछ भी उपयोगी करने में असमर्थ है, यह कभी नहीं मेरे पारित कर दिया डमी वस्तु पर कुछ भी कहता है, इसलिए मुझे लगता है कि यह एक भाषा सेवा से एक पहले से ही दिखाई दे IVsTipWindow की आवश्यकता है।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन दुर्भाग्य से मैंने बिना किसी सफलता के इस समाधान का परीक्षण किया है। – rodi

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