2012-02-11 98 views
0

所以我正在開發一個基本的記事本程序,旨在幫助網頁設計師。我有一個可以粘貼到編輯器中的不同代碼塊列表,但是我無法粘貼它們,因爲我想要它。基本上,我希望能夠在文本編輯器中的兩行(或單詞)之間單擊,並且能夠將這些塊粘貼到閃爍的光標所在的位置。粘貼文本框中光標處的文本行

這是我在選擇的粘貼選項之一爲當前代碼:

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

然而,不是在光標處粘貼它,它完全攪亂了線路,有時甚至從上粘貼它行到第一。我完全不知道自己做錯了什麼,可以真正使用一些幫助。

回答

0

這是該行導致該問題:

cursorPosition = cursorPosition + insertText.Length; 

試試這個:當你改變richTextBox1Text財產

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

選擇位置被重置爲0。 cursorPosition是您的局部變量,然後在循環中下次顯示新值。

+0

絕對完美!我不知道當有變化時它重置爲0,但現在有意義。 – user975696 2012-02-11 07:48:53

0

我真的不知道你的代碼應該做什麼。

我沒有用RichTextBox工作太多,但是,如果你想在當前位置插入一些文本,只需做richTextBox1.SelectedText = insertText。 (請注意,這將替換選定的文本,如果有的話)。

您可以使用richTextBox1.SelectionStartrichTextBox1.SelectionLength來更改當前位置/選擇。