以编程方式使用缩进设置C#代码的格式
我正在制作一个C#应用程序,包括一个以编程方式使用缩进设置C#代码的格式,c#,formatting,C#,Formatting,我正在制作一个C#应用程序,包括一个RichTextBox,用户可以在其中放入一些C#代码,并像VisualStudio那样通过缩进对其进行格式化 private void btnEdit_Click(object sender, EventArgs e) { //rchCode.Text= formattedCode; // Which I haven't got anywhere so far } 我寻找同样的问题,并建议使用名为的工具,但我不想使用其他工具、加载项或类似的工具 还提供
RichTextBox
,用户可以在其中放入一些C#代码,并像VisualStudio那样通过缩进对其进行格式化
private void btnEdit_Click(object sender, EventArgs e)
{
//rchCode.Text= formattedCode; // Which I haven't got anywhere so far
}
我寻找同样的问题,并建议使用名为的工具,但我不想使用其他工具、加载项或类似的工具
还提供了CodeDOM方法,我还没有弄明白如何使用它(如果它在任何方面都有帮助的话)
我想通过编写一些实际的代码来实现这一点。我该怎么做呢?因此我通过以下方式得到了解决方案: 它还不够完美(因为它总是在第一行代码之前添加一行或多行新行)。因此,如果有人能改进它或有更好的方法,我将感谢任何新的建议
private void btnEdit_Click(object sender, EventArgs e)
{
RichTextBox rchTemp = new RichTextBox();
foreach (string line in rchCode.Lines)
{
rchTemp.AppendText("\r\n" + line.Trim());
}
RichTextBox rchTemp2 = new RichTextBox();
int indentCount = 0;
bool shouldIndent = false;
foreach (string line in rchTemp.Lines)
{
if (shouldIndent)
indentCount++;
if (line.Contains("}"))
indentCount--;
if (indentCount == 0)
{
rchTemp2.AppendText("\r\n" + line);
shouldIndent = line.Contains("{");
continue;
}
string blankSpace = string.Empty;
for (int i = 0; i < indentCount; i++)
{
blankSpace += " ";
}
rchTemp2.AppendText("\r\n" + blankSpace + line);
shouldIndent = line.Contains("{");
}
rchCode.Text = rchTemp2.Text;
}
private void btnEdit\u单击(对象发送者,事件参数e)
{
RichTextBox rchTemp=新的RichTextBox();
foreach(rchCode.Lines中的字符串行)
{
rchTemp.AppendText(“\r\n”+line.Trim());
}
RichTextBox rchTemp2=新的RichTextBox();
int indentCount=0;
bool shouldIndent=false;
foreach(临时行中的字符串行)
{
如果(应指示)
indentCount++;
if(第行包含(“}”))
缩进计数--;
如果(indentCount==0)
{
rchTemp2.AppendText(“\r\n”+行);
shouldIndent=line.Contains(“{”);
继续;
}
string blankSpace=string.Empty;
对于(int i=0;i
要正确缩进代码,您需要Microsoft.CodeAnalysis.CSharp nuget软件包和.NET framework 4.6+。示例代码:
public string ArrangeUsingRoslyn(string csCode) {
var tree = CSharpSyntaxTree.ParseText(csCode);
var root = tree.GetRoot().NormalizeWhitespace();
var ret = root.ToFullString();
return ret;
}
一艘班轮:
csCode = CSharpSyntaxTree.ParseText(csCode).GetRoot().NormalizeWhitespace().ToFullString();
您还可以使用它对cs文件中的方法进行排序、组织使用、创建区域等。用于下面的代码,它在C文件中工作正常,但在cshtml文件中不工作。是否有其他html文件解决方案