当存在tabcontrol控件的时候如何让textbox获取焦点 How to let textbox get focus in VB.net if there is tabcontrol in same form

今天遇到一个问题,我的textBox(txt1)无论如何都得不到焦点

我尝试了以下函数

txt1.focus

txt1.select

txt1.selectall

me.ActiveControl = txt1

失败

查资料后又做了如下设置

把txt1的taborder设置成0,检查所有其他控件,并把他们的taborder改成大于0整数 失败

我猜测问题在和textBox平级的tabcontrol上,把tabcontrol的tabstop设置成false 失败

然后我怀疑是因为我把代码放在了form load事件里

于是把代码移动到 form VisibleChanged 事件里 失败

这时我在断点处发现,activecontrol已经正常,但是txt1.canfocus居然是false,而且也没有被选中,实在不知道form内部是如何实现的taborder了(难道是一层一层的递归?如果这样,岂不是顶层控件很难得到焦点?)。即使我把tabcontrol内部的控件(在其他form里)设置为0以上的taborder似乎也起不到作用

最后只好用了个近似hack的方法解决了。如果有哪位高手知道更好的方法,请不吝赐教,感激不尽

button1.Select()

' button1: taborder = 1

Me.Select(True,True) ' txt1: taborder = 0

成功 This code works!

Tang

09/03/27

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...