C# 将光标移到C中的文本框

C# 将光标移到C中的文本框,c#,winforms,cursor,C#,Winforms,Cursor,我想在单击按钮时将光标移到文本框。我该怎么做?我试过聚焦法,但没用。代码如下所示 CsNIPAddrTextBox.Focus(); CsNIPAddrTextBox.TabIndex = 1; 再次编辑: 如果您尝试在树视图的单击事件中选择文本框,通常会失败,因为在单击事件之后,树节点将被选中,使您以前的焦点或选择无效。可行的方法也许是,在计时器中调用它们 这更像是一种黑客行为…如果这是一个“正确”的文本框,即不是自定义的,那么只需调用Focus就可以了。但是,如果它是只读的,可能不会,我不

我想在单击按钮时将光标移到文本框。我该怎么做?我试过聚焦法,但没用。代码如下所示

CsNIPAddrTextBox.Focus();
CsNIPAddrTextBox.TabIndex = 1;
再次编辑:

如果您尝试在树视图的单击事件中选择文本框,通常会失败,因为在单击事件之后,树节点将被选中,使您以前的焦点或选择无效。可行的方法也许是,在计时器中调用它们


这更像是一种黑客行为…

如果这是一个“正确”的文本框,即不是自定义的,那么只需调用Focus就可以了。但是,如果它是只读的,可能不会,我不确定——我没有尝试过。我知道您可以在只读框中获得插入符号,这意味着它可以获得焦点。当然,如果它没有启用,那么您将无法设置焦点

检查CanFocus属性是否为true-如果不是,则可能有其他原因阻止控件接收焦点

但是,如果这是真的,并且插入符号仍然没有到达控件-您需要验证它是否正在接收它。为文本框的事件添加一个事件处理程序,并对其设置断点,以明确它是否被命中。我猜你的断点会被击中。如果是这样的话,那么答案是另一个进程在您单击按钮后立即将焦点设置到另一个控件。例如,如果在验证事件处理程序中执行此类操作,则会得到类似的结果,因为Windows窗体管道在启动处理程序时已经在更改控件

另外-为什么要将TabIndex设置为1?通常TabIndex是在设计时设置的,除非是动态创建的。除非你有特别的理由这么做,否则我会把那句台词删掉。这与为什么这会/不会起作用无关——只是一个观察。

你必须使用

比如说

textbox1.Select(textbox1.Text.Length,0);

将光标设置为文本框中文本的结尾。

如果我读对了,您是说将鼠标光标移动到文本框?-然后您可以使用如下代码:

System.Windows.Forms.Cursor.Position = 
     PointToScreen( 
            new Point( textBox1.Location.X + 5, textBox1.Location.Y + 5) 
     );

设置窗体的ActiveControl属性

ActiveControl = yourtextbox

尝试textbox1.select。这是将光标移到文本框的最佳方法。它还可以选择文本框的内容,用户可以更轻松地编辑文本框中的内容。

我知道你们中的许多人都提供了答案,但这对一些无法从以前的回答中获得答案的人可能有用。 这对我来说很有效,在输入文本上设置Select将光标设置为文本框

在表单构造函数中包含以下内容:

this.Activated += OnActivated;
处理程序代码:

private void OnActivated(object sender, EventArgs eventArgs)
        {
            txtUser.Select();
        }

如果textbox.Multiline=true和/或textbox.WordWrap=true,则光标可能隐藏在字段底部。

这两行在代码中的位置?在将光标指定给文本框后,是否还有其他元素可能占据焦点?真的需要更多的代码。不,我不关注其他任何东西。这是一个treeview控件的点击事件。我喜欢WPF和MVVM模式来解决这个问题。希望你能搬到WPF一号day@CSharpened这就是我添加评论的原因;也许他认为这是解决方案的一部分。不,我想把标签移到文本框。这只会将鼠标指针移动到textbox1位置。@petre您检查过我的最新答案了吗?CanFocus属性为true,我检查过了。焦点不工作,当我单击时,光标没有进入文本框。您是否尝试删除该控件并再次检查是否添加了正确的控件。一个新的文本框控件应该能够使用.focus进行对焦。如果它仍然不起作用,那么上面关于测试GotFocus事件的建议就是你的下一步。@blabla那么如果你发现它不起作用,为什么你会接受这个答案呢?试试米希的答案,看看它是否有效,如果有效,你应该接受它
private void OnActivated(object sender, EventArgs eventArgs)
        {
            txtUser.Select();
        }