【问题标题】:Get position of selected text in string in textbox获取文本框中所选文本在字符串中的位置
【发布时间】:2013-03-19 12:36:36
【问题描述】:

好的,我正在尝试在这里做一些具体的事情。我想在文本框中获取所选文本的位置。

详细说明-我可以使用位置来选择文本。如果我有一个 textBox1 我可以这样做:

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

这将从第二个字母开始并选择 4 个字母。

我想做的恰恰相反:当用户选择文本时,我想找出开始是什么,长度是多少(或者开始是什么,结束是什么。两者都行)。

我想过只在字符串中搜索选定文本 (textBox1.SelectedText)。如果它是一个常用词或多次使用的字符串,就会出现问题。例如。

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

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

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

【问题讨论】:

  • 你不能只看SelectionStartSelectionLength
  • 你不能只使用textBox1.SelectionStarttextBox1.SelectionLength的值吗?
  • ... ...我什至没有考虑过。如果这行得通,我会觉得很愚蠢。大声笑感谢您的回复! =D

标签: c# textbox selectedtext


【解决方案1】:

根据documentationSelectionStartSelectionLength既可以设置也可以读取。就用那些吧。

【讨论】:

  • 感谢巴特,感谢您的评论和您的原始评论!这解决了我的问题。再过 10 分钟我无法选择答案,但我会在它允许的那一刻选择答案。
【解决方案2】:

您甚至不需要知道所选文本的位置来操作它们,要编辑您在文本中选择的文本,您可以简单地将SelectedText 属性设置为新的编辑值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2014-02-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多