2009-09-25 9 views
14

मैं वास्तव में VS2008 को एक क्षेत्र की सामग्री को इंडेंट करना चाहता हूं। एक नमूना शायद सबसे अच्छा होगा।सी # के साथ क्षेत्र की सामग्री कैसे इंडेंट करें?

क्या है अब करता है:

#region [ Fields ] 
public int Count; 
public int Total; 
#endregion 

क्या मैं चाहता है:

#region [ Fields ] 
    public int Count; 
    public int Total; 
#endregion 

मैं कैसे वी.एस. यह करने के लिए मिल सकता है?

संपादित करें: इसके मूल्य के लिए, वीएस यह VB.NET में करता है।

+2

पढ़ने योग्य हो सकता है: http://stackoverflow.com/questions/1476550/c-any- मानक-way-to-divide-a-class-into-regions/1476582#1476582 –

+3

दिलचस्प टिप्पणियां और कोडिंग डरावनी ब्लॉग दिलचस्प था। टिप्पणी जो मुझे सबसे ज्यादा दिलचस्पी थी, एक सर्जन के साथ समानता थी। अर्थात। मरीज को कवर किया जाता है सिवाय इसके कि सर्जन काम करेगा। इस तरह मेरा दिमाग सबसे अच्छा काम करता है, इस मुद्दे पर ध्यान केंद्रित करें। हालांकि विभिन्न दृष्टिकोण के लिए धन्यवाद! इस लिंक किए गए SO लेख में –

+0

विशिष्ट सी # प्रोग्रामर टिप्पणियां! यहां तक ​​कि यदि आप क्षेत्रों को पसंद नहीं करते हैं (और मैं करता हूं, और ऑटो इंडेंटिंग वीबी ने मुझे याद किया), यह अभी भी एक वैध सवाल है! –

उत्तर

4

बॉक्स से बाहर? आप नहीं कर सकते

+1

कोई भी एडिन/टूल्स जो यह करेगा? –

+0

ऐसा नहीं है कि मुझे पता है। मैं क्षेत्रों का उपयोग नहीं करता! मैंने बस ReSharper विकल्पों की जांच की, लेकिन कुछ भी नहीं देख सका। –

+0

डाउनवॉटर: कृपया एक टिप्पणी छोड़ दें। अन्यथा करना अनुत्पादक है। –

-1

उपकरण विकल्प पाठ संपादक सी # टैब्स इंडेंट स्मार्ट अध्यक्ष

+2

यह वास्तव में किसी क्षेत्र की सामग्री को इंडेंट नहीं करता था (कम से कम मेरे लिए)। –

6

इस मैक्रो काम करना चाहिए, अधिकांश भाग के लिए:

Public Sub IndentRegions() 
    'Assume that the document has been smart formatted 
    Dim TS As TextSelection = DTE.ActiveDocument.Selection 
    TS.SelectAll() 
    Dim lines As String() = TS.Text.Split(vbNewLine) 

    Dim level As Integer = 0 

    TS.StartOfDocument() 

    While Not TS.ActivePoint.AtEndOfDocument 

     If lines(TS.ActivePoint.Line - 1).Trim().StartsWith("#endregion") Then 
      level = level - 1 
     End If 

     For i = 1 To level 
      TS.Indent() 
     Next 

     If lines(TS.ActivePoint.Line - 1).Trim().StartsWith("#region") Then 
      level = level + 1 
     End If 

     TS.LineDown() 
     TS.StartOfLine() 
    End While 
End Sub 
+1

मैक्रो के लिए धन्यवाद। यह सुझाव दिया जाता है (मान लीजिए कि आप वास्तव में चयन करते हैं ... DOH!): यह एक क्षेत्र के नीचे की रेखाओं को इंडेंट करता है। हालांकि, जैसे ही मैं सुधार करने के लिए सीटीएल + के + डी का उपयोग करता हूं, काम पूर्ववत हो जाता है! तो, अभी के लिए, मैं बस इसके साथ रह रहा हूँ। –

+0

आप एक मैक्रो लिख सकते हैं जो स्मार्ट प्रारूप करता है और फिर इंडेंट क्षेत्रों को चलाता है। मुझे नहीं पता कि क्या आप मैक्रो में Ctrl + K D को फिर से मैप कर सकते हैं (मुझे यकीन है कि आप एक और कुंजी अनुक्रम मैप कर सकते हैं)। –

+0

यह एक अच्छा विचार है ... मैं कोशिश कर रहा हूं। –

1

मैं कहूंगा कि है एक ही तरीका है इस अनुकरण करने के लिए क्षेत्रों के अंदर ब्रेसिज़ "{" और "}" का उपयोग करने के लिए, अपने कोड ब्लॉक को सीमित करें। दुर्भाग्यवश यह केवल कार्य और विधियों के कोड के अंदर काम करता है, इसलिए यह आपके उदाहरण के लिए काम नहीं करेगा। कुछ मामलों में, कोड ब्लॉक को सीमित करना असंगत हो सकता है और आपके कोड तर्क के अनुसार समायोजन की आवश्यकता होती है।

function Test(){ 

    #region Example 
    { 
     your code 
    } 
    #end region 

} 
3

बदलें मुख्य पृष्ठ पृष्ठभूमि के अलावा अन्य किसी अन्य रंग के लिए पृष्ठभूमि रंग (मैं सफेद के ऊपर चांदी का इस्तेमाल किया) और यह कि ऐसा लगता है कि आप देख रहे हैं इंडेंट यह दे देंगे।

Options>Environment>Fonts and Colors> प्रदर्शन आइटम: Preprocessor Keyword और फिर item background लटकती बदल जाते हैं।

+1

मुझे यह जवाब पसंद है। इंडेंट्स और इंडेंट्स हैं :) – timothy

+1

यह अच्छी तरह से काम करता है, नहीं पूछा गया था, लेकिन क्षेत्रों को दृष्टि से हाइलाइट करने की चाल है। – MaurGi

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