2009-09-25 13 views
14

私は本当にVS2008を自動的に領域の内容をインデントしたいと思います。おそらくサンプルが最適でしょう。C#で領域の内容をインデントする方法は?

は今いているもの:私が欲しい何

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

は次のとおりです。

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

私はVSは、これを行うために取得できますか?

EDIT: VB となります。これはVB.NETで行います。

+2

は読む価値があります:http://stackoverflow.com/questions/1476550/c-any-standard-way-to-divide-a-class-into-regions/1476582#1476582 –

+3

興味深いコメントとコーディングホラーブログは面白かった。私に最も関心のあるコメントは、外科医との類推でした。私。外科医が働く場所を除いて、患者は覆われている。それが私の心が最もよく働く方法です。手元の問題に集中してください。しかし、異なる視点に感謝! –

+0

このリンクされたSOの記事の典型的なC#プログラマーのコメント!あなたが地域を好きではない(と私は、し、自動インデントVBが私を与えた逃しても)、それはまだ有効な質問です! –

答えて

4

?できません。

+1

これを行うアドイン/ツールはありますか? –

+0

私は気づいていません。私は地域を使っていません! ReSharperのオプションをチェックしただけですが、何も見えませんでした。 –

+0

Downvoter:コメントを残してください。それ以外は、非生産的です。 –

-1

ツール オプション テキストエディタ C# タブ インデント スマートのIdent

+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!):リージョンの下の行をインデントします。ただし、Ctl + K + Dを使用して再フォーマットすると、すぐに作業が取り消されます。だから、今のところ、私はちょうどそれと一緒に暮らしています。 –

+0

スマートフォーマットを実行し、インデント領域を実行するマクロを記述することができます。 Ctrl + K Dをマクロに再マップできるかどうかはわかりません(ただし、別のキーシーケンスをマップすることはできます)。 –

+0

それは良い考えです...私はそれを試みるつもりです。 –

1

を私はこれをシミュレートするための唯一の方法があると言うでしょうコードブロックを区切る、リージョンの中で中かっこ "{"と "}"を使用します。 Unfortunatellyこれは関数とメソッドのコード内でのみ動作します。したがって、これはあなたの例では機能しません。場合によっては、区切りコードブロックが互換性がなく、コードロジックに従って調整が必要な場合があります。

3

メインページの背景(私は白の上にシルバーを使用しました)以外の色に背景色を変更してください、それはあなたが探しているインデントされた感じを与えるでしょう。

Options>Environment>Fonts and Colors>表示項目:Preprocessor Keyword、その後item backgroundドロップダウンを変更します。

+1

私はこの答えが大好きです。インデントとインデントがあります。 – timothy

+1

これはうまくいきました。尋ねられたのではなく、領域を視覚的に強調するトリックです。 – MaurGi

関連する問題