gpt4 book ai didi

c# - 如何在上下文菜单中注释和取消注释代码

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:13 24 4
gpt4 key购买 nike

我正在使用 mousedown 事件在右键单击时显示上下文菜单,我的上下文菜单列表中的 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;
}

但是当我全选并且有不同的文本行(selectall)时发表评论,输出是:

enter image description here

但我应该是这样的:

enter image description here

(不要介意突出显示,只是我想要文本前的//)。

如何在不同的文本行之前添加//?另外取消注释我的代码就足够了吗?或者有更多/更好的代码吗?

编辑

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);
}
}

最佳答案

你的问题是你只是在文本的开头添加了'//'。

您需要为新行字符解析所选文本,然后在每行的开头添加一个“//”。

描述了 String Builder 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();
}

关于c# - 如何在上下文菜单中注释和取消注释代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16556333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com