我想在点击按钮时将光标移到文本框中。我该怎么做?我尝试了Focus()方法,但它没有起作用。以下是代码。
CsNIPAddrTextBox.Focus();
CsNIPAddrTextBox.TabIndex = 1;
CsNIPAddrTextBox.Focus();
CsNIPAddrTextBox.TabIndex = 1;
textbox1.select()
。这是将光标移到文本框的最佳方法。它还选择了文本框内的内容,使用户更容易编辑其中的内容。Focus()
应该就可以了。但是,如果它是只读的(我不确定——我没有尝试过。我知道你可以在只读框中得到插入符号,这意味着它可以获得焦点),那么可能不起作用。当然,如果它没有启用Enabled
,那么你将无法设置焦点。CanFocus
属性是否为真——如果不是,那么可能有其他原因阻止控件接收焦点。true
,但是插入符仍未到达控件,则需要验证控件是否已经接收到。为文本框的GotFocus
事件添加事件处理程序,并设置断点以澄清它是否被触发。我猜想你的断点会被触发。如果是这样的话,那么答案就是在你单击按钮后立即有另一个进程将焦点设置到另一个控件。例如,如果你在验证事件处理程序中执行此类操作,你将得到类似的结果,因为当处理程序被触发时,Windows Forms管道已经在更改控件。TabIndex=1
?通常TabIndex
在设计时设置并保持不变(除非当然这些是动态创建的)。除非你有一个特别的原因去这样做,否则我建议删除这一行。这与为什么会/不会起作用无关,只是一个观察结果。再次编辑:
如果您尝试在TreeView
的Click
事件中选择一个TextBox
,通常会失败,因为在Click
事件之后,TreeNode
将被选中,使得您之前的Focus()
或Select()
无用。可行的方法是,在Timer
中调用它们。
Timer t = new Timer();
t.Interval = 10;
t.Tick += new EventHandler((s,ev)=>textBox2.Focus());
t.Start();
设置表单的ActiveControl属性
ActiveControl = yourtextbox
如果我理解正确,您是在谈论将鼠标光标移动到文本框中?- 那么您可以使用以下代码:
System.Windows.Forms.Cursor.Position =
PointToScreen(
new Point( textBox1.Location.X + 5, textBox1.Location.Y + 5)
);
我知道很多人已经提供了答案,但这可能对一些之前未能获得答案的人有用。对我来说有效的方法是,在输入文本上设置Select()
,可以将光标设置到文本框中。
在表单构造函数中添加以下内容:
this.Activated += OnActivated;
处理程序代码:
private void OnActivated(object sender, EventArgs eventArgs)
{
txtUser.Select();
}
textbox.Multiline=true
和/或textbox.WordWrap = true
,则光标可能会隐藏在字段底部。