On Error GoTo errorhandler
创新互联自2013年起,先为依兰等服务建站,依兰等地企业,进行企业商务咨询服务。为依兰企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
Dim sR As String, sPath As String
Set fld = fso.GetFolder(dirSource.Path)
sR = InputBox("请输入新建文件夹的名称:", "输入对话框", "aaa")
If Len(Trim(sR)) 0 Then
sPath = IIf(Right(fld.Path, 1) = "\", fld.Path sR, fld.Path "\" sR)
Set fld = fso.CreateFolder(sPath)
Command1.Enabled = True
End If
Call RefDirControl
filename = fld.Path
exit sub ‘少了这句
errorhandler:
MsgBox Err.Description, vbOKOnly, "提示 "
Err 对象的属性是由错误的生成者(Visual Basic、对象或程序员)设置的。
当发生运行时错误时,Err 对象的属性由唯一地标识错误的信息以及可用于处理错误的信息填充。若要在代码中生成运行时错误,使用 Raise 方法。
在错误处理例程中的 Exit Sub、Exit Function、Exit Property 或 Resume Next 语句执行之后,Err 对象的属性重置为零或零长度字符串 ("")。在错误处理例程以外,使用任何形式的 Resume 语句都不会重置 Err 对象的属性。但可使用 Clear 方法显式地重置 Err。
使用 Raise 方法而不是 Error 语句来给系统错误和类模块生成运行时错误。是否要在其他代码中使用 Raise 方法决定于您需要返回的信息的多少。
Err 对象是一个全局作用域的内部对象。因此,不需要在代码中创建其实例。
示例
本示例在构建错误信息对话框时使用了 Err 对象的属性。请注意,如果首先使用 Clear 方法,则使用 Raise 方法生成 Visual Basic 错误时,Visual Basic 的默认值将成为 Err 对象的属性。
Dim Msg As String
' If an error occurs, construct an error message.
On Error Resume Next ' Defer error handling.
Err.Clear
Err.Raise(6) ' Generate an "Overflow" error.
' Check for error, then show message.
If Err.Number 0 Then
Msg = "Error # " Str(Err.Number) " was generated by " _
Err.Source ControlChars.CrLf Err.Description
MsgBox(Msg, MsgBoxStyle.Information, "Error")
End If
命名空间:Microsoft.VisualBasic
程序集:Microsoft Visual Basic .NET 运行库(位于 Microsoft.VisualBasic.dll 中)
添加:(先在加一个contextMenu,再它的添加子菜单的click事件编程)
Try
’使TreeView可以被编辑
TreeView1.LabelEdit = True
‘判断你是不是选定的是不可编辑的节点,我这里工种节点不可以被编辑,只有工种下级的
各个工种名称可以被编辑
If Trim(TreeView1.SelectedNode.Text) = "工种" Then
‘添加节点
AddNode = New TreeNode("请输入新工种名字")
TreeView1.SelectedNode.Nodes.Add(AddNode)
TreeView1.ExpandAll()
AddNode.BeginEdit()
TreeView1.LabelEdit = True
NodeAdded = True
End If
Catch err As Exception
MsgBox(err.ToString)
End Try
删除与添加类似,只是如果你的节点名字从其他处(如数据库)得来,那么你还需要更新数据库
编辑:
Private Sub TreeView1_BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.BeforeLabelEdit
TreeView1.LabelEdit = True ‘使可以编辑
AddNode = TreeView1.SelectedNode
End Sub
Private Sub TreeView1_AfterLabelEdit(ByVal sender As Object, ByVal e As System.windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.AfterLabelEdit
Try
‘此时你改完了节点名字
TreeView1.SelectedNode.EndEdit(True)
If e.Label Is Nothing Then
'do nothing
ElseIf e.Node.Text = "工种" Then ‘工种不能改
e.CancelEdit() = True
‘e.Node.Text ,e.Label.ToString 一个是改前的名字一个是该后的名字,具体哪个对
哪个请查MSDN
ElseIf Trim(e.Node.Text) "工种" And e.Node.Text e.Label.ToString Then
If MsgBox("此操作会导致当前工种中的所有人员的工种都被更改,是否确定?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "警告") = MsgBoxResult.Yes Then
。。。。 ‘我的更改
MsgBox("更改成功!", MsgBoxStyle.OKOnly, "提示")
'Call InitTree() ‘有时要重新把treeview初始化一遍,视需求定
End If
End If
Catch err As Exception
MsgBox(err.ToString)
End Try
End Sub
其他:
挡treeview得到焦点时你可以使用ContextMenu,反之ContextMenu禁用
Private Sub TreeView1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.GotFocus
TreeView1.ContextMenu = ContextMenu1
End Sub
Private Sub TreeView1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.LostFocus
TreeView1.ContextMenu = Nothing
End Sub
注意:这里没有在ContextMenu菜单添加“更改”项,而是直接更改:即左键单击节点表示
选中,再单击一下就可以编辑了,更改之后单击他处就完成更改,和你在windows中更改文
件名字相似。