Foxtable(狐表)用户栏目专家坐堂 → [求助]虽然有了AfterEditNode,但是如何禁止重复还是不会啊!


  共有11646人关注过本帖树形打印复制链接

主题:[求助]虽然有了AfterEditNode,但是如何禁止重复还是不会啊!

帅哥哟,离线,有人找我吗?
hanxuntx
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
[求助]虽然有了AfterEditNode,但是如何禁止重复还是不会啊!  发帖心情 Post By:2011/11/22 10:28:00 [只看该作者]

试了半天,还是不行。

我现在的代码

 

Dim b As Boolean = False
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each nd As WinForm.TreeNode In tr.AllNodes
    If nd.Text = e.NewText Then
        e.Cancel =True
        b =True
        Exit For
    End If
Next
If b Then
    MessageBox.Show("已存在同名角色,请修改!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    tr.SelectedNode = e.Node
    tr.Select()
    tr.BeginEdit()     '执行到这里只能选中节点,不能进入编辑
End If

 

求示例

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/22 10:56:00 [只看该作者]

可以禁止重复的:

 

If e.NewText <> e.Node.Text Then
    Dim cnt As Integer
    Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
    For Each nd As WinForm.TreeNode In tr.AllNodes
        If nd.Text = e.NewText Then
            cnt = cnt + 1
        End If
    Next
    If cnt > 0 Then
        e.Cancel = True
        MessageBox.Show("已存在同名角色,请修改!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        tr.SelectedNode = e.Node
        tr.Select()
    End If
End If

 

不过只能禁止重复,无法重新进入编辑状态。


 回到顶部
帅哥哟,离线,有人找我吗?
hanxuntx
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/11/22 11:22:00 [只看该作者]

是否可以个改进?无法重新进入编辑状态,客户点击其他节点了,禁止重名实际就没达到

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/11/22 11:58:00 [只看该作者]

临时解决办法: 下面时是利用系统例子里的目录树管理.table文件,上面有个“重命名”按钮:

在 .......

        tr.SelectedNode = e.Node
        tr.Select()


后面加上:


Sendkeys.send("{Tab}")
Application.DoEvents()
Sendkeys.send("{Enter}")


    End If
End If

[此贴子已经被作者于2011-11-22 11:59:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/11/22 12:07:00 [只看该作者]

2楼代码可以禁止重复的。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/11/22 12:14:00 [只看该作者]

以下是引用狐狸爸爸在2011-11-22 12:07:00的发言:
2楼代码可以禁止重复的。

加上4楼的就可以重新进入编辑(节点)的状态。。。啊。


 回到顶部
帅哥哟,离线,有人找我吗?
hanxuntx
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/11/22 12:39:00 [只看该作者]

以下是引用mr725在2011-11-22 12:14:00的发言:

加上4楼的就可以重新进入编辑(节点)的状态。。。啊。

呵呵不错


 回到顶部
帅哥哟,离线,有人找我吗?
hanxuntx
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/11/22 12:41:00 [只看该作者]

不过只对按回车完成编辑有效,如果控件比较多,而且用狐表点选了别的控件的话就有点不好用了

 回到顶部