我需要三个功能:复制,粘贴,剪切,
对于FastColoredTextBox ..到目前为止我的方法,工作已经完成,但之后,
光标的位置发生变化,我不知道如何将光标保持在哪里
之前。
这是我的方法:
private void OnMouseMenuCut(object sender, EventArgs e)
{
var sPoint = rtbScript.SelectionStart;
var ePoint = rtbScript.SelectionLength;
var text = rtbScript.SelectedText;
rtbScript.Text = rtbScript.Text.Remove(sPoint, ePoint);
Clipboard.SetText(text.Replace("\n", "\r\n"));
rtbScript.Text = rtbScript.Text.Insert(sPoint, text);
}
private void OnMouseMenuCopy(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(rtbScript.SelectedText)) return;
Clipboard.SetText(rtbScript.SelectedText.Replace("\n", "\r\n"));
}
private void OnMouseMenuPaste(object sender, EventArgs e)
{
if (!Clipboard.ContainsText()) return;
var index = rtbScript.SelectionStart;
rtbScript.Text = rtbScript.Text.Insert(index, Clipboard.GetText());
}
此外,如果有更好的方法来执行这些功能,请发布..
谢谢!
答案 0 :(得分:1)
对于RichTextBox,您的代码比丢失Cursor位置有更多问题,它也会丢失所有格式!以下是应该更好的版本:
private void OnMouseMenuCut(object sender, EventArgs e)
{
var sPoint = rtbScript.SelectionStart;
var text = rtbScript.SelectedText;
rtbScript.Cut();
Clipboard.SetText(text.Replace("\n", "\r\n"));
rtbScript.SelectionStart = sPoint;
}
private void OnMouseMenuCopy(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(rtbScript.SelectedText)) return;
Clipboard.SetText(rtbScript.SelectedText.Replace("\n", "\r\n"));
}
private void OnMouseMenuPaste(object sender, EventArgs e)
{
if (!Clipboard.ContainsText()) return;
var index = rtbScript.SelectionStart;
rtbScript.SelectedText = Clipboard.GetText();
rtbScript.SelectionStart = index + Clipboard.GetText().Length;
}
注意:您永远不能更改RTB的Text属性,否则您将搞乱格式化!
既然你写了这个也适用于你的FastColoredTextBox
我已取消删除解决方案..
答案 1 :(得分:0)
在当前版本的FCTB中,这些方法已经存在于FCTB.cs文件中。他们只需要联系起来。