以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  有关DropDownBox 控件焦点 转移的问题?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=145324)

--  作者:hwlzgt
--  发布时间:2020/1/16 11:27:00
--  有关DropDownBox 控件焦点 转移的问题?
多次查阅了论坛中的贴子&帮助示例 还是不得其法,遂发贴求教!
想实现在完成DropDownBox控件下拉目录树的输入后,通过代码自动将输入焦点转移到下一个控件(tab键的下一个),却发现无法转移,只能通过鼠标点选才能再次取得输入焦点。请教是代码问题吗?

frmzlgsbmlist_AfterLoad 

\'加载目录树

frmtr(e.Form.Controls("TreeView1"),"qryjczlgsbm")

 

frmzlgsbmlist_DropDownOpened 

e.Form.DropDownBox.Select()

 

frmzlgsbmlist_TreeView1_NodeMouseClick 

If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的

    e.Form.DropDownBox.Value = e.node.Name

    e.Form.DropTable.FinishEditing()

Else \'如果是通过窗口下拉的

    Select Case  MainTable.name

        Case  "tblzllpzl", "tblcgcgsq"

            If e.node.Text <> "全部"

                e.Form.DropDownBox.value = e.node.name & "_" & e.node.Text

            Else

                e.Form.DropDownBox.value = ""

            End If

            e.Form.DropDownBox.Select()

            Sendkeys.Send("{tab}")

        Case  "qryxsddlist"                  

    End Select

End If

e.Form.DropDownBox.CloseDropdown



--  作者:有点蓝
--  发布时间:2020/1/16 11:41:00
--  
我测试可以,上传实例说明
--  作者:hwlzgt
--  发布时间:2020/1/16 12:47:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:带查找功能的下拉目录树.table


以上示列我改写了NodeMouseClick事件代码

If e.Node.Level = 1 Then \'如果单击的是第二层节点
    Dim tr As Row = Tables("客户").Current
    Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow
    tr("省市") = dr("省市")
    tr("县市") = dr("县市")
    tr("区号") = dr("区号")
    tr("邮编") = dr("邮编")
    e.Form.DropDownBox.Value = tr("县市") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
    e.Form.DropDownBox.Select()
    Sendkeys.Send("{tab}")
    e.Form.DropDownBox.CloseDropdown()
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:带查找功能的下拉目录树.table

End If

--  作者:有点蓝
--  发布时间:2020/1/16 14:35:00
--  
不能在NodeMouseClick关闭下拉窗口,这个会影响内部消息处理

DropDownClosed事件

Sendkeys.Send("{tab}")

添加一个关闭按钮,代码
e.Form.DropDownBox.CloseDropdown

--  作者:hwlzgt
--  发布时间:2020/1/16 18:45:00
--  
先谢过解答,但还是不太理解?
 是否可以理解为  1、帮助 & 示例中 NodeMouseClick事件代码中的 e.Form.DropDownBox.CloseDropdown() 是有问题的?  要用其它办法关掉下拉窗口,关闭下拉窗体后再转移控件焦点。
                  2、再增加一个关闭按钮不是又节外生枝了,还有其途径吗?

--  作者:有点蓝
--  发布时间:2020/1/17 8:41:00
--  
e.Form.DropDownBox.CloseDropdown()没有问题,只是在目录树点击会导致窗口无法获取焦点。

没有其他途径,个人觉得,添加一个确定按钮才是合理的,毕竟有时候用户点击目录树这个节点未必就是想选用这个节点。