如何在文本框中找到光标的位置? C#

时间:2009-02-08 22:33:25

标签: c# cursor-position

我有一个标准的WinForms TextBox,我想在文本中的光标位置插入文本。如何获得光标的位置?

由于

9 个答案:

答案 0 :(得分:80)

无论是否选择了任何文本,SelectionStart属性都代表您所关注文本的索引。因此,您可以使用String.Insert注入一些文本,如下所示:

myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");

答案 1 :(得分:13)

您想要检查SelectionStart的{​​{1}}属性。

答案 2 :(得分:6)

詹姆斯,当你只想在光标位置插入一些文字时,你需要替换整个字符串是非常低效的。

更好的解决方案是:

textBoxSt1.SelectedText = ComboBoxWildCard.SelectedItem.ToString();

如果未选择任何内容,则会在光标位置插入新文本。 如果您选择了某些内容,则会将所选文本替换为您要插入的文本。

我从eggheadcafe site找到了这个解决方案。

答案 3 :(得分:4)

你所要做的就是:

双击将文本插入光标文档的项目(按钮,标签等)。然后输入:

richTextBox.SelectedText = "whatevertextyouwantinserted";

答案 4 :(得分:2)

您建议我记录变量的事件是什么?离开?

目前我有:

private void comboBoxWildCard_SelectedIndexChanged(object sender, EventArgs e)
{
    textBoxSt1.Focus();
    textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());

}

private void textBoxSt1_Leave(object sender, EventArgs e)
{
    intCursorPos = textBoxSt1.SelectionStart;
}

在Leave事件上录制工作但是文本没有插入,我错过了什么吗?

更新:我需要textBoxSt1.Text =

textBoxSt1.Text = textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());

谢谢大家。

由于

答案 5 :(得分:2)

这是我的工作实现,只允许键入数字,并恢复最后一个有效的输入文本位置:

的Xaml:

<TextBox
      Name="myTextBox" 
      TextChanged="OnMyTextBoxTyping" />

代码背后:

private void OnMyTextBoxTyping(object sender, EventArgs e)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(myTextBox.Text, @"^[0-9]+$"))
    {
        var currentPosition = myTextBox.SelectionStart;
        myTextBox.Text = new string(myTextBox.Text.Where(c => (char.IsDigit(c))).ToArray());
        myTextBox.SelectionStart = currentPosition > 0 ? currentPosition - 1 : currentPosition;
    }
}

答案 6 :(得分:1)

您必须将SelectionStart属性保留在变量中,然后在按下按钮时将焦点移回TextBox。然后将SelectionStart属性设置为变量中的属性。

答案 7 :(得分:1)

int cursorPosition = textBox1.SelectionStart;
//it will extract your current cursor position where ever it is
//textBox1 is name of your text box. you can use one
//which is being used by you in your form

答案 8 :(得分:0)

要在TextBox的文字中点击鼠标时获取插入位置,请使用TextBox MouseDown事件。使用MouseEventArgs的X和Y属性创建一个点。 TextBox有一个名为GetCharIndexFromPosition(point)的方法。将它传递给它并返回插入位置。如果您使用鼠标确定要插入新文本的位置,则此方法有效。