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

san*_*p22 3 c# cursor winforms

我想点击按钮时将光标移到文本框中.我怎样才能做到这一点?我尝试了Focus()方法,但它没有用.代码如下所示.

CsNIPAddrTextBox.Focus();
CsNIPAddrTextBox.TabIndex = 1;
Run Code Online (Sandbox Code Playgroud)

ThE*_*oOb 15

试试textbox1.select().这是将光标移动到文本框的最佳方法.它还选择texbox的内容,使用户更容易编辑文本框内的内容.


And*_*tan 6

如果那是一个“适当的”文本框(即非自定义),则只需调用即可Focus()。但是,如果它是只读的,则可能不是这样(我不确定-我还没有尝试过。我知道您可以在只读框中插入插入号,这意味着它可以获得焦点)。当然,如果不是,Enabled那么您将无法设置焦点。

检查CanFocus属性是否为真-如果不正确,则可能还有其他原因导致控件无法获得焦点。

true但是,如果是,而插入符仍未进入控件-您需要验证它是否已收到它。为文本框的GotFocus事件添加一个事件处理程序,并对其断点以说明它被击中。我的猜测是,它将击中您的断点。如果是这样,那么答案是单击按钮后立即有另一个进程将焦点设置到另一个控件上。 例如,如果您在验证事件处理程序中执行此类操作,则会得到类似的结果,因为在触发处理程序时,Windows Forms管道已经在更改控件的过程中。

另外-您为什么要设置TabIndex=1?通常,它TabIndex是在设计时设置的,并且不要理会(除非这些是动态创建的)。除非您有特定原因要这样做,否则我将摆脱该限制。它与为什么/不起作用无关,只是一个观察。


Alv*_*ong 5

再次编辑:

如果你试图在a TextBox的情况Click下选择a TreeView,它通常会失败,因为在Click事件发生之后TreeNode会被选中,使你以前Focus()或者Select()没用.或许,可行的方式是将它们称为Timer.

Timer t = new Timer();
t.Interval = 10;
t.Tick += new EventHandler((s,ev)=>textBox2.Focus());
t.Start();
Run Code Online (Sandbox Code Playgroud)

这更像是一个黑客...


jij*_*663 5

设置窗体的 ActiveControl 属性

ActiveControl = yourtextbox
Run Code Online (Sandbox Code Playgroud)