我正在使用mousedown事件在rightclick上显示的contextmenu以及我的上下文菜单列表中的2是注释并取消注释此代码:
private void CommentMenuItemClick(object sender, EventArgs e)
{
rtb.SelectedText = "//" + rtb.SelectedText;
lb.Hide();
}
private void UnCommentMenuItemClick(object sender, EventArgs e)
{
rtb.SelectedText = rtb.SelectedText.Replace("//", "");
lb.Hide();
rtb.SelectionColor = Color.Black;
}
但是当我选择all和theres diff文本行(selectall)时,为了评论,输出是:
但我应该像:
我该怎么做?在文本差异行之前添加//?有什么建议吗? 还是为了取消注释是我的代码足够吗?或者更好的代码呢? 请帮助多多!
---编辑
void Parse()
{
String inputLanguage = "\n";
// Foreach line in input,
// identify key words and format them when adding to the rich text box.
Regex r = new Regex("\\n");
String[] lines = r.Split(inputLanguage);
foreach (string l in lines)
{
ParseLine(l);
}
}
答案 0 :(得分:4)
您的问题是您只是在文本的开头添加'//'。
您需要为新行char解析所选文本,然后在每行的开头添加“//”。
字符串构建器描述为here,它位于System.Text
中类似的东西:
private void CommentMenuItemClick(object sender, EventArgs e)
{
StringBuilder sw = new StringBuilder();
string line;
StringReader rdr = new StringReader(rtb.SelectedText);
line = rdr.ReadLine();
while(line != null)
{
sw.AppendLine(String.IsNullOrWhiteSpace(line) ? "//" : "" + line);
line= rdr.ReadLine();
}
rtb.SelectedText = sw.ToString();
lb.Hide();
}
答案 1 :(得分:1)
您需要做的是用“//”替换换行符 所以试试这个
rtb.SelectedText = "//" + rtb.SelectedText.Replace(System.Environment.NewLine, System.Environment.NewLine + "//")
答案 2 :(得分:0)
你需要按行分解并添加" //"到每个人的开头。现在你只是添加" //"是由连接的每一行组成的单个字符串的开头(因此单个" //")。
答案 3 :(得分:0)
首先拆分每一行。然后将//添加到每行的开头。
string[] lines = selected.Split('/n', '/r');
foreach (string l in lines)
{
ParseLine(l);
}
添加到这些行并附加它们。附加的字符串将替换为所选文本。
修改强> 的
注释:
using System;
public class Test
{
public static void Main()
{
string source = "comment me" + Environment.NewLine + "line two.";
string[] lines = source.Split('\r', '\n');
foreach (string line in lines)
{
Console.WriteLine("//" + line);
}
}
}
输出:
// comment me
// line two.
在线代码段:http://ideone.com/sGJNzr
取消注释:
using System;
public class Test
{
public static void Main()
{
string source = "//uncomment me" + Environment.NewLine + "//line two.";
string[] lines = source.Split('\r', '\n');
foreach (string line in lines)
{
Console.WriteLine(line.Replace("//", ""));
}
}
}
输出:
uncomment me
line two.
在线代码段:http://ideone.com/roY0AK
您需要将source
设置为rtb.SelectedText