C# 获取文本框中字符串中选定文本的位置

C# 获取文本框中字符串中选定文本的位置,c#,textbox,selectedtext,C#,Textbox,Selectedtext,好的,我想做点具体的事情。我想在文本框中获取所选文本的位置 详细说明-我可以使用位置来选择文本。如果我有一个文本框1,我可以: textBox1.SelectionStart = 1; textBox1.SelectionLength = 4; 从第二个字母开始,选择4个字母 我想做的恰恰相反:当用户选择文本时,我想知道文本的开始和长度(或者开始和结束,两者都可以) 我考虑在字符串中搜索selectedtext(textBox1.selectedtext)。如果一个常用词或字符串被多次使用,就

好的,我想做点具体的事情。我想在文本框中获取所选文本的位置

详细说明-我可以使用位置来选择文本。如果我有一个文本框1,我可以:

textBox1.SelectionStart = 1;
textBox1.SelectionLength = 4;
从第二个字母开始,选择4个字母

我想做的恰恰相反:当用户选择文本时,我想知道文本的开始和长度(或者开始和结束,两者都可以)

我考虑在字符串中搜索selectedtext(textBox1.selectedtext)。如果一个常用词或字符串被多次使用,就会出现问题。比如说

这是一只猫。这是一只猫。这是一只猫

如果他们选择第二个句子,使用SelectedText在字符串中搜索该特定句子对我没有好处。它可能是3个中的任何一个


所以,我的问题是:当用户单击一个按钮时,我如何确定用户选择的确切元素,以便以后可以操作这些特定元素?重要的是要注意后面的部分-我可能不会只想在按下按钮时操纵文本。稍后,当文本可能不再突出显示时,我还想对其进行操作。这意味着我想存储一些东西,告诉我我正在处理的句子的具体部分。如果该解决方案不可行,您是否可以想出一个解决方案,在上面的“这是一只猫”示例中,用户可以选择第二句话,点击一个按钮,然后我知道当他点击该按钮时选择了哪句话?

SelectionStart
SelectionLength
都可以设置和读取。只需使用它们。

你甚至不需要知道所选文本的位置就可以操作它们,要编辑文本中所选的文本,只需将
SelectedText
属性设置为新的编辑值即可

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

不能只读取
SelectionStart
SelectionLength
?不能只使用
textBox1.SelectionStart
textBox1.SelectionLength
的值吗。。。我甚至没想过。如果那样行的话,我会觉得自己很愚蠢。哈哈,谢谢你的回复=汉克斯·巴特,谢谢你的评论!这解决了我的问题。我不能在接下来的10分钟内选择答案,但我会在它允许我的那一刻选择答案。