你說的“樹形菜單”是指下拉菜單(可以有子菜單)嗎?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在對應(yīng)位置打字就可以了,完全是“所見即所得”。
成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、成都做網(wǎng)站與策劃設(shè)計,永善網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:永善等地區(qū)。永善做網(wǎng)站價格咨詢:18982081108
添加:(先在加一個contextMenu,再它的添加子菜單的click事件編程)
Try
’使TreeView可以被編輯
TreeView1.LabelEdit = True
‘判斷你是不是選定的是不可編輯的節(jié)點,我這里工種節(jié)點不可以被編輯,只有工種下級的
各個工種名稱可以被編輯
If Trim(TreeView1.SelectedNode.Text) = "工種" Then
‘添加節(jié)點
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
刪除與添加類似,只是如果你的節(jié)點名字從其他處(如數(shù)據(jù)庫)得來,那么你還需要更新數(shù)據(jù)庫
編輯:
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
‘此時你改完了節(jié)點名字
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菜單添加“更改”項,而是直接更改:即左鍵單擊節(jié)點表示
選中,再單擊一下就可以編輯了,更改之后單擊他處就完成更改,和你在windows中更改文
件名字相似。
添加一個ContextMenuStrip,設(shè)計好菜單后,點你要彈出這個菜單的控件,將ContextMenu屬性改成你要的菜單
'首先通過菜單[項目] -- [添加引用],選擇[COM]選項卡,選擇“Microsoft Excel XX.0 Object Library”,[確定]。
添加一個按鈕:
試試下面的代碼:注意版本;先建立以個EXCEL文件保存到c:\下面,我的計算機是安裝OFFICE 2010。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim AppXls As Microsoft.Office.Interop.Excel.Application '聲明Excel對象
Dim AppWokBook As Microsoft.Office.Interop.Excel.Workbook '聲明工作簿對象
Dim AppSheet As New Microsoft.Office.Interop.Excel.Worksheet '聲明工作表對象
AppXls = New Microsoft.Office.Interop.Excel.Application '實例化Excel對象
AppXls.Workbooks.Open("C:\工作簿1.xlsx") '打開已經(jīng)存在的EXCEL文件
AppXls.Visible = False '使Excel不可見
'AppWokBook = New Microsoft.Office.Interop.Excel.Workbook '實例化工作簿對象
'AppSheet = New Microsoft.Office.Interop.Excel.Worksheet '實例化工作表對象
AppWokBook = AppXls.Workbooks(1) 'AppWokBook對象指向工作簿"C:\學生成績.xls"
AppSheet = AppWokBook.Sheets("Sheet1") 'AppSheet對象指向AppWokBook對象中的表“Sheet1”,即:"C:\學生成績.xls"中的表“Sheet1”
'下面舉一些例子:
'1、如果不聲明工作表對象 AppSheet ,那么應(yīng)用AppWokBook對象中的表“Sheet1”的語句就是:AppWokBook.Sheets("Sheet1")
'2、如果不聲明工作簿對象 AppWokBook ,那么應(yīng)用"C:\學生成績.xls"中的表“Sheet1”的語句就是:AppXls.Workbooks("C:\學生成績.xls").Sheets("Sheet1")
'要讀取數(shù)據(jù)表"Sheet1"中的單元格“A1”的值,到變量S1里
Dim S1 As String
'方法一
S1 = AppXls.Workbooks(1).Sheets("Sheet1").Range("A1").Value
MsgBox(S1)
'方法二
S1 = AppWokBook.Sheets("Sheet1").Range("A1").Value
MsgBox(S1)
'方法三
S1 = AppSheet.Range("A1").Value
MsgBox(S1)
'把數(shù)據(jù)寫入到單元格“H2”,就是第2行第8個單元格
'方法一
AppXls.Workbooks(1).Sheets("Sheet1").Cells(2, 8).Value = "您好!"
S1 = AppXls.Workbooks(1).Sheets("Sheet1").Cells(2, 8).Value '為了驗證,讀取并顯示它
MsgBox(S1)
'方法二
AppWokBook.Sheets("Sheet1").Cells(2, 8).Value = "你們好!"
S1 = AppWokBook.Sheets("Sheet1").Cells(2, 8).Value '為了驗證,讀取并顯示它
MsgBox(S1)
'方法二
AppSheet.Cells(2, 8).Value = "大家好!"
S1 = AppSheet.Cells(2, 8).Value '為了驗證,讀取并顯示它
MsgBox(S1)
'使用完畢必須關(guān)閉EXCEL,并退出
AppXls.ActiveWorkbook.Close(SaveChanges:=True)
AppXls.Quit()
'完成此程序,打開EXCEL檢查,可以看到在“Sheet1”表的單元格“H2”里是文本“大家好!”
End Sub
End Class
工具箱里有ContextMenu(.NET2.0以后名字有點變化,大概差不多),你加入窗體后就可以像編輯普通菜單那樣編輯。
編輯好后,選中你要添加菜單的控件。屬性窗口里有個ContextMenu屬性,在里面選你剛才建立的ContextMenu
這個簡單,我以前用VB6就寫過一個類似的程序。 不過這個程序需要提供命令行參數(shù)喲。
就算用VB.NET編寫,也必須要有接收這個命令行參數(shù)的,不然無法實現(xiàn)顯示文件或文件夾路徑。
下面是注冊表文件的內(nèi)容,你也可以用程序來寫入注冊表。
*表示所有文件,你可以隨便修改。
最后面的%1,表示當前文件或文件夾
REGEDIT4
[HKEY_CLASSES_ROOT\*\shell\顯示名稱]
[HKEY_CLASSES_ROOT\*\shell\顯示名稱\command]
@="D:\\綠色軟件\\編程\\VB\\顯示名稱\\顯示名稱.exe %1"