C# 如何知道插入符号在文本框(TextBlock)中的当前位置以编程方式选择某个单词
例如,在文本框(TextBlock)C#WPF中键入时 美丽的自然 漂亮的u(在这里,在键入nature之前,我想知道插入符号当前位置的索引。假设“u”下划线现在正在闪烁插入符号) 我试图实现的是通过按下LeftShift按钮来设置选择的起始位置,并通过按下RightShift按钮来设置结束位置 这样我就可以在文本框中以编程方式选择要在某处使用的最新(最近)的单个单词 我用下面的简单代码尝试了几种方法,但都失败了,在互联网上也没有类似的例子 或者,作为更好的解决方案,是否有人知道这样一种方法:在完全键入beautiful nature并只按一次某个键后,只通过编程选择最近的单词“nature” 如果有人能分享这方面的优点,我将不胜感激C# 如何知道插入符号在文本框(TextBlock)中的当前位置以编程方式选择某个单词,c#,wpf,textbox,location,caret,C#,Wpf,Textbox,Location,Caret,例如,在文本框(TextBlock)C#WPF中键入时 美丽的自然 漂亮的u(在这里,在键入nature之前,我想知道插入符号当前位置的索引。假设“u”下划线现在正在闪烁插入符号) 我试图实现的是通过按下LeftShift按钮来设置选择的起始位置,并通过按下RightShift按钮来设置结束位置 这样我就可以在文本框中以编程方式选择要在某处使用的最新(最近)的单个单词 我用下面的简单代码尝试了几种方法,但都失败了,在互联网上也没有类似的例子 或者,作为更好的解决方案,是否有人知道这样一种方法:在
int startinglocation;
int endinglocation;
int selectionlength;
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key==Key.LeftShift) After typing Beautiful in textBox,
{
// To know the current location of Caret, Some wise instruction is needed here
}
if (e.Key == Key.RightShift) // After typing Nature in textBox,
{
// To know the current location of Caret, Some wise instruction is needed here
int selectionlength=endinglocation- startinglocation;
textBox.Select(startinglocation, selectionlength);
}
}
解决了的 后者是更好的解决方案,只需按Nicolas Tyler的按键即可选择最近的最新单词。谢谢你,泰勒先生
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.RightShift)
{
selectWord();
}
}
private void selectWord()
{
int cursorPosition = textBox1.SelectionStart;
int nextSpace = textBox1.Text.IndexOf(' ', cursorPosition);
int selectionStart = 0;
string trimmedString = string.Empty;
if (nextSpace != -1)
{
trimmedString = textBox1.Text.Substring(0, nextSpace);
}
else
{
trimmedString = textBox1.Text;
}
if (trimmedString.LastIndexOf(' ') != -1)
{
selectionStart = 1 + trimmedString.LastIndexOf(' ');
trimmedString = trimmedString.Substring(1 + trimmedString.LastIndexOf(' '));
}
textBox1.SelectionStart = selectionStart;
textBox1.SelectionLength = trimmedString.Length;
}
使用
当您使用WinForms时,它会给出当前光标的位置
使用演示文稿基础时,您可以使用
TextBox.CaretIndex
如MSDN所述。你好,斯托姆。我非常感激你的想法。但正如我已经尝试过的,在我的研究中,SelectionStart只指示我们进行文本选择后所选文本的起始索引。我希望通过知道插入符号的当前位置来了解以编程方式进行选择。现在,我找到了textBox.Select(textBox.text(beautifuly)。Length,textBox.text(beautifuly nature)。Length-textBox.text(漂亮的).Length)我需要试试这个..利用两个长度的差异..当我在WinForm上创建一个文本框时,可以执行一个
MessageBox.Show(textBox1.SelectionStart.ToString())例如,在文本框中写一个文本,然后在第五个字符后面放置光标,然后返回5!这是有效的!当你使用演示文稿基础的时候,你可以使用TrimBox。CurtCurrand。这也适用。我已经更新了我的答案。亲爱的暴风雨,我衷心感谢你对匿名者的积极支持。幸运的是,我找到了Nicolas Tyler提到的后一种更好的解决方案,并且它成功地工作了。请参考我的更新版本。
TextBox.CaretIndex