2013-03-28 36 views
1

好吧,我正在嘗試在這裏做一些具體的事情。我想要在文本框中獲取選定文本的位置。在文本框中獲取所選文本在字符串中的位置

詳細說明 - 我可以使用位置來選擇文本。如果我有一個textBox1我可以這樣做:

textBox1.SelectionStart = 1; 
textBox1.SelectionLength = 4; 

這將從第二個字母開始,並選擇4個字母。

我想要做的是相反的:當用戶選擇文本時,我想知道什麼是開始和長度是什麼(或開始是什麼以及結束是什麼,兩者都可以工作)。

我想過只是搜索selectedtext(textBox1.SelectedText)的字符串。如果它是一個常用字或多次使用的字符串,則會出現問題。例如。

這是一隻貓。這是一隻貓。這是一隻貓。

如果他們選擇第二個句子,使用SelectedText搜索該特定句子的字符串,那麼我就沒有好處。它可以是3.

所以,我的問題是:當用戶點擊一個按鈕時,如何確定用戶選擇的確切元素,以便我可以稍後操作這些特定元素?重要的是要注意後面的部分 - 我可能不會只想按下按鈕時操作文本。我還想稍後再操縱它,此時文本可能不再被突出顯示。這意味着我將要存儲SOMETHING來告訴我我正在處理的句子的具體部分。如果該解決方案不可行,是否有解決方案可以考慮在哪裏,在上面的「這是一個貓」的例子中,用戶可以選擇第二個句子,點擊一個按鈕,然後我知道哪個句子被選中當他擊中那個按鈕?

+1

你不能只讀'SelectionStart'和'SelectionLength'? –

+0

難道你不能只使用'textBox1.SelectionStart'和'textBox1.SelectionLength'的值嗎? –

+0

......我甚至都沒有想過。如果這樣做,我會感到非常愚蠢。大聲笑感謝您的答覆! = D – user1548103

回答

6

根據documentation,SelectionStartSelectionLength可以設置和讀取。只需使用這些。

+0

感謝Bart,對於這個和你原來的評論!這解決了我的問題。我無法選擇另一個10分鐘的答案,但我會立即讓它回答。 – user1548103

1

你甚至不需要知道選定文本的位置來操作它們,編輯文本中選擇的文本,你可以簡單地將SelectedText屬性設置爲新的編輯值。

// if textBox1.text = "Hello World World"; with first "World" selected 
textBox1.SelectedText = textBox1.SelectedText.Replace("World", "Raj"); 
// then it becomes "Hello Raj World" 
相關問題