如何在单击时设置文本框的光标位置

时间:2010-01-27 22:29:01

标签: c# textbox cursor position

我需要预先填充一些文本的文本框,并希望光标在聚焦时默认为文本框的开头。

private void txtBox_Enter(object sender, EventArgs e)
{
    if (this.txtBox.Text == "SOME PREFILL TEXT")
    {
        this.txtBox.Select(0, 0);
    }
}

我正在捕捉_Enter如上所示,如果我在文本框中选中它,它实际上是有效的,但如果我在文本框中单击鼠标,则鼠标会在鼠标单击执行的任何地方出现,表示它是在_Enter事件,有效地“覆盖”我所做的事情。 为了解决这个问题,我迷上了_Click事件来调用txtBox_Enter处理程序,但没有运气。

有没有解决这个问题?

谢谢, -ben

3 个答案:

答案 0 :(得分:2)

您要完成的是什么 - 更改默认功能(例如通常选择光标位置的点击)是要求用户体验问题。

也许你想要的是SETCUEBANNER的某些内容?

答案 1 :(得分:1)

也许您可以将if块提取到它自己的方法中。

然后从txtBox_Enter()以及_Click中调用它,如果存在,则_AfterClick()

你也可以使用_Focus()事件进行调查,虽然我不确定它们在触发事件的顺序中的位置。

答案 2 :(得分:0)

我还通过处理_MouseClick事件解决了此问题。我使用_Enter事件将选项卡放入控件案例中,并将相同的代码添加到_MouseClick:

private void txtBox_MouseClick(object sender, EventArgs e)
{
    if (this.txtBox.Text == "SOME PREFILL TEXT")
    {
        this.txtBox.Select(0, 0);
    }
}

同时使用_Enter和_MouseClick事件应该可以满足您的需求。