私はC#の独自の構文ハイライトエディタを開発中です。私はすでにキーワード、関数などの自動色付けを完了しました。私は、自動コードの字下げのような他の派手なものは必要ありません。C#のRichTextEditorのコードインデント。
ただし、コードの縮小/最大化ボタンが必要です。何もない。私はそれを自動的に改行を設定する前に任意の開きかっことその後ろにタブ文字またはSelectionIndent Propertyを変更します。
したがって、このような何か:
test { test { test } test }
は次のようになります。
test
{
test
{
test
}
}
そしてもちろんの縮小化ボタンが1本のライン上のすべてを入れて、正反対のことをする必要があります。
私は既にRegex.Replace Methodでの作業を試みました。私はそれをうまく動作させることはできませんでしたが、そのアプローチについて考えると、開閉括弧が混ざり合うと問題が発生します。とにかく、これは私があきらめたし、いくつかの助けをあなたたちに依頼することを決めたそれまでは持っていたものされています。もちろん、そのソリューションは間違ったアプローチである
string tabs = "";
private void btnMax_Click(object sender, EventArgs e)
{
var count = codeRichTextBox.Text.Count(x => x == '{');
for(int i=1; i<= count; i++)
{
// The idea was to add \t to tabs here on each iteration
}
string pattern = "{";
string replacement = "\n{\n\t";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(codeRichTextBox.Text, replacement);
codeRichTextBox.Text = result;
}
、仕事に行くのではありません。だから代わりに私は何をすべきですか?
編集:いいですが、文字列の一部に既にコードインデントがあることを考慮する必要はありません。 maxifyボタンは、単一の行にある文字列でのみ動作する必要があります。
どのようなアプローチをとっても、文字列やコメントの内側にある角かっこを無視できるほどスマートにしてください。 – RJM
@RJM通常、私はあなたに同意するでしょうが、これはMinecraftのコマンドブロックのエディタになるので、私は100%確実ではありません。しかし、ヒントをありがとう – icecub