以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  动态文本控件没有焦点显示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149944)

--  作者:rogen
--  发布时间:2020/5/16 7:32:00
--  动态文本控件没有焦点显示
窗体里用代码动态添加了几个文本框控件
点击文本框或者用tab切换焦点顺序时,看不到有闪动光标,不知道当前焦点是在哪个控件上
设计时手动添加的固定文本框,就能显示焦点光标
经研究,发现是因为对动态控件添加了字体,以下代码的红色部分,去掉红色代码就能显示焦点光标了

For i As Integer = 0 To 3
    Dim txt As WinForm.TextBox
    txt = e.Form.CreateControl("TextBox1", ControlTypeEnum.TextBox)
    txt.Left = 100 + 20*i
    txt.Top = 100 + 20*i
    Dim fs As FontStyle = 0
    Dim zt As String = "微软雅黑"
    Dim fnt As New Font(zt,10, fs)
    txt.font = fnt
    e.Form.AddControl(txt)
Next

请教如何既能自定义字体,也能显示焦点光标?

[此贴子已经被作者于2020/5/18 10:57:45编辑过]

--  作者:rogen
--  发布时间:2020/5/16 7:39:00
--  
重建一个测试项目又行了。。。
--  作者:有点蓝
--  发布时间:2020/5/16 8:53:00
--  
控件要处于选中状态才可以显示光标,一个窗口同时只能有一个控件处于选中状态。
--  作者:rogen
--  发布时间:2020/5/18 8:05:00
--  

再次测试,发现只要加上多行文本时,就会不显示焦点

 

For i As Integer = 0 To 3
    Dim txt As WinForm.TextBox
    txt = e.Form.CreateControl("TextBox1", ControlTypeEnum.TextBox)
    txt.Left = 100 + 20*i
    txt.Top = 100 + 20*i
    txt.MultiLine = True
    e.Form.AddControl(txt)
Next

使用上面红色时,就会不显示焦点光标

请官方测试


--  作者:有点蓝
--  发布时间:2020/5/18 8:56:00
--  
把控件设置高一点即可

For i As Integer = 0 To 3
    Dim txt As WinForm.TextBox
    txt = e.Form.CreateControl("TextBox" & i, ControlTypeEnum.TextBox)
    txt.Left = 100 + 20*i
    txt.Top = 100 + 50*i
    txt.Height = 40
    txt.MultiLine = True
    e.Form.AddControl(txt)
Next