【问题标题】:Pasting lines of text at the cursor in a textbox在文本框中的光标处粘贴文本行
【发布时间】:2012-02-11 07:23:08
【问题描述】:

所以我正在开发一个基本的记事本程序,旨在帮助网页设计师。我有一个可以粘贴到编辑器中的不同代码块的列表,但是我无法按照我想要的方式粘贴它们。基本上,我希望能够在文本编辑器上的两行(或单词,任何地方)之间单击,并能够将这些块粘贴到闪烁光标所在的位置。

这是我当前选择粘贴选项之一时的代码:

public void getCodeBlock(string selection)
{
    string[] codeBlocks = System.IO.File.ReadAllLines(@"blocks\" + selection + ".txt");
    foreach (string codeBlock in codeBlocks)
    {
        int cursorPosition = richTextBox1.SelectionStart;
        string insertText = codeBlock + Environment.NewLine;
        richTextBox1.Text = richTextBox1.Text.Insert(cursorPosition, insertText);
        cursorPosition = cursorPosition + insertText.Length;
    }
}

但是,它并没有将其粘贴到光标处,而是完全混淆了行,有时甚至将其从最后一行粘贴到第一行。我完全不知道我做错了什么,并且真的可以使用一些帮助。

【问题讨论】:

    标签: c# textbox cursor pasting


    【解决方案1】:

    正是这一行导致了问题:

    cursorPosition = cursorPosition + insertText.Length;
    

    试试这个:

    richTextBox1.SelectionStart = cursorPosition + insertText.Length -1;
    

    当您更改richTextBox1 的Text 属性时,选择位置将重置为0。 cursorPosition 是你的局部变量,它会在下次循环时采用新值。

    【讨论】:

    • 绝对完美!我不知道当有变化时它会重置为 0,不过现在说得通了。
    【解决方案2】:

    我真的不知道你的代码应该做什么。

    我对 RichTextBox 的工作并不多,但是,如果您想在当前位置插入一些文本,只需执行 richTextBox1.SelectedText = insertText。 (请注意,这将替换选定的文本,如果有的话。)

    您可以使用richTextBox1.SelectionStart 和richTextBox1.SelectionLength 更改当前位置/选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      相关资源
      最近更新 更多