以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 当树的结点较多时,在树上双击时,当前结点会乱跑? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7783) |
||||
-- 作者:cpayinyuan -- 发布时间:2010/8/5 12:41:00 -- 当树的结点较多时,在树上双击时,当前结点会乱跑? 如题,当窗口中 的 树的某节点的子节点较多时,在节点上双击,当前节点会自己变化,不知怎么回事? 如事例(开发版的),表A的窗口1,树的事件代码很简单,在某节点上双击时,提示框显示出当前节点的名称(e.Node.name),在其他节点上双击能正常显示,但当双击“河南”时(这个节点的子节点较多),显示的节点名称乱七八糟,莫名其妙!
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/8/5 12:46:00 -- Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") MessageBox.Show(trv.SelectedNode.Text) |
||||
-- 作者:cpayinyuan -- 发布时间:2010/8/5 12:50:00 -- 贺老师怎么没有回答我事例中的问题?帮助中的内容如下:
NodeMouseDoubleClick 用鼠标双击节点后执行。 e参数属性 Form: 触发事件的窗口
我用e.Node获得双击的节点,难道不对吗? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/8/5 15:00:00 -- 帮助没有错的,你也没有错。 这个问题是.net framework的bug,只能想办法绕开它。 |
||||
-- 作者:cpayinyuan -- 发布时间:2010/8/13 14:24:00 -- 以下是引用狐狸爸爸在2010-8-5 12:46:00的发言:
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") MessageBox.Show(trv.SelectedNode.Text) 经认真测试,如果树的层次结构比较复杂,尤其是同时展开的节点(子节点)较多时,用SelectedNode同样不能正常使用!我的项目中的设计是,当在某节点上双击时,把选择的当前节点作为条件在表中筛选或查询,现在无论用e.Node.Text还是用e.Sender.SelectedNode.Text,在前述情况下都不能正常筛选或查询! 这么一个小问题,难道没有办法了?????? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/8/13 15:42:00 -- 用单击吧 |
||||
-- 作者:cpayinyuan -- 发布时间:2010/8/13 16:28:00 -- 以下是引用狐狸爸爸在2010-8-13 15:42:00的发言:
用单击吧 大部分同类的软件都是用双击,所以用单击不符合用户的习惯。
希望贺老师再想想办法啊! |
||||
-- 作者:cpayinyuan -- 发布时间:2010/8/14 11:27:00 -- 以下是引用cpayinyuan在2010-8-13 16:28:00的发言:
大部分同类的软件都是用双击,所以用单击不符合用户的习惯。
希望贺老师再想想办法啊! |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/8/14 11:39:00 -- 我没有办法的。
.net的bug很多,有的我可以想办法绕过去,有的我也束手无策,我也就是个二道贩子而已,很多东西我无法决定。
你可以在单击事件中用一个Static变量记录上次单击的时间,如果时间间隔小于0.5秒(间隔自己决定),就执行动作,来人为地模拟双击:
Static lt As Date If (Date.Now-lt).TotalSeconds < 0.5 Then 执行代码 End If lt = Date.Now()
|
||||
-- 作者:cpayinyuan -- 发布时间:2010/8/14 12:10:00 -- 以下是引用狐狸爸爸在2010-8-14 11:39:00的发言:
我没有办法的。
.net的bug很多,有的我可以想办法绕过去,有的我也束手无策,我也就是个二道贩子而已,很多东西我无法决定。
你可以在单击事件中用一个Static变量记录上次单击的时间,如果时间间隔小于0.5秒(间隔自己决定),就执行动作,来人为地模拟双击:
Static lt As Date If (Date.Now-lt).TotalSeconds < 0.5 Then 执行代码 End If lt = Date.Now()
谢谢,我试试!
另外,我不太明白,是 .net2.0有这个bug,还是任何版本都有?难道微软发现了bug就不再改进吗? [此贴子已经被作者于2010-8-14 12:38:20编辑过]
|