我正在尝试使用 ScintillaNET 组件在 C# 中实现自定义文本编辑器。到目前为止,我已经掌握了大部分内容,但一直停留在某个地方。我想让用户能够阻止评论/取消评论选定的文本。我尝试了很多,但在网上找不到任何示例。我似乎从控件的 Selection 对象中得到的唯一东西是 Start 和 End 位置,但这并没有多大帮助
private void commentBlockToolStripMenuItem_Click(object sender, EventArgs e)
{
if (txtSQL.Selection.Text.Length > 0)
{
String start = txtSQL.Selection.Start.ToString();
String end = txtSQL.Selection.End.ToString();
MessageBox.Show(start + "::" + end);
}
}
你们中的任何人都能够使用 ScintillaNET 控件成功实现这一点吗?
编辑:经过一些即兴创作,我能够以某种方式做到这一点,但是在块被评论后,最后一行移出选择!
private void commentBlockToolStripMenuItem_Click(object sender, EventArgs e)
{
if (txtSQL.Selection.Text.Length > 0)
{
Range range = txtSQL.Selection.Range;
int f = range.StartingLine.Number;
int t = range.EndingLine.Number;
int endpos = txtSQL.Selection.End;
for (int i = f; i <= t; i++)
{
//txtSQL.GoTo.Line(i);
string tstr = txtSQL.Lines[i].Text.Replace(Environment.NewLine, "");
txtSQL.Lines[i].Text = "--" + tstr;
}
}
}