2012-06-11 59 views
1

我目前處於.NET4 Windows窗體應用程序中。獲取脫字號/光標位置並將其保留在特定位置

我試圖做一些像intellisense,但非常非常基本。

假設用戶正在關注RichTextBox,並輸入如下內容: Search。在這個特定的短語之後,我希望它能像這樣自動填充:Search ""並將插入符號放在「」之間。

當用戶鍵入不斷插入符號之間的「」像這樣停留在這樣:

Search "[usertypinghere][caretposition]"

我不知道如何來獲取插入符的當前位置,更不用說如何保持在那裏。

回答

1

這是SelectionStart喜的是它是TextBoxBase一部分,所以你可以把它在TextBoxRichTextBoxMaskedTextBox,甚至是其他的定製衍生物。您需要訂閱TextChanged事件以查看「搜索」,然後在自動填充後設置SelectionStart,然後訂閱SelectionChangedEvent以保持SelectionStart免於關閉。

噢,如果你有幾個關鍵字,你會想把這些關鍵字合併爲TuplesDictionary以概括這些方法。

編輯 我的測試代碼。沒有閃爍,沒有壓倒一切的控制。只是簡單的事件用戶

private void richTextBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text == "Search") 
     { 
      richTextBox1.Text = "Search \"\""; 
      richTextBox1.SelectionStart = richTextBox1.TextLength - 1; 
     } 

    } 

    private void richTextBox1_SelectionChanged(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text.StartsWith("Search \"") && richTextBox1.Text.EndsWith("\"")) 
     { 
      if (richTextBox1.SelectionStart > richTextBox1.TextLength - 1) 
      { 
       richTextBox1.SelectionStart = richTextBox1.TextLength - 1; 
      } 
      if (richTextBox1.SelectionStart <= "Search \"".Length) 
      { 
       richTextBox1.SelectionStart = "Search\"".Length+1; 
      } 
     } 
    } 
+0

這是我願意使用它的完美。謝謝! – James