微軟在出VS2005的時候強化了數據處理這塊,使的和2003的控件方法區(qū)別有些大,2005是一大敗筆只是一個過渡版本,建議在無特殊要求下用2003.等到2008微軟會出相應的版本,到時再換也不遲
六合網站建設公司創(chuàng)新互聯(lián),六合網站設計制作,有大型網站制作公司豐富經驗。已為六合近千家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的六合做網站的公司定做!
ToolStripMenuItem.ShortcutKeys 屬性
獲取或設置與 ToolStripMenuItem 關聯(lián)的快捷鍵。
使用 ShortcutKeys 屬性可以將組合鍵分配給菜單命令,例如,將 Ctrl+C 分配給“復制”命令。 您可以使用快捷鍵而不使用訪問鍵,也可以同時使用快捷鍵和訪問鍵,訪問鍵是菜單或菜單項中與 Alt 鍵一起使用的帶下劃線的字母。 通過在要用于訪問鍵的字母前面鍵入一個“and”符 (),可以在代碼中定義訪問鍵。
添加:(先在加一個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é)點名字從其他處(如數據庫)得來,那么你還需要更新數據庫
編輯:
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中更改文
件名字相似。
你說的“樹形菜單”是指下拉菜單(可以有子菜單)嗎?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在對應位置打字就可以了,完全是“所見即所得”。
以下是我以前用過的資料,應該對你有幫助的.
Menu 菜單控件可以建立水平或垂直方向的菜單。asp:Menu控件非常容易使用與調整。可以使用 MenuItem 控件來建立靜態(tài)菜單,或是從 SiteMapDataSource 數據源控件建立動態(tài)菜單。Menu 菜單控件有80個公有屬性(包括所有控件都擁有的共同屬性)。Menu控件的常用屬性如表7-4所示。
表7-4 Menu 控件的常用屬性
屬 性 屬 性 描 述
CssClass 允許設置一個應用到整個控件的CSS類屬性
StaticDisplayLevels 顯示幾層靜態(tài)菜單,超過就成為動態(tài)菜單
Orientation 菜單方向是默認垂直 Vertical,或水平 Horizontal
StaticMenuStyle 靜態(tài)菜單的樣式
StaticHoverStyle 當鼠標移至靜態(tài)菜單的選項上時,顯示的樣式
StaticMenuItemStyle 靜態(tài)菜單的選項樣式
DynamicMenuStyle 動態(tài)菜單的樣式
DynamicMenuItemStyle 動態(tài)菜單的選項樣式
DynamicHoverStyle 當鼠標移至動態(tài)菜單的選項上時,顯示的樣式
MaximumDynamicDisplayLevels 確定控件能顯示的子菜單項的級數。
有助于非常大的站點地圖限制發(fā)送給瀏覽器的項數
Menu控件包含幾個以Static或Dynamic開頭的特性。Static特性用來控制加載頁面時出現(xiàn)的主菜單項。因為把鼠標懸停在它們上面時它們不會改變或隱藏,所以認為它們是靜態(tài)的。子菜單是動態(tài)的,因為只有當激活相關主菜單項時它們才會出現(xiàn)。
1. 靜態(tài)菜單
Menu控件可以使用MenuItem控件定義菜單數據來建立靜態(tài)菜單。下面舉例說明在VWD2008中創(chuàng)建靜態(tài)菜單的方法。
【例7-7】利用Menu控件在網頁中添加一個菜單,實現(xiàn)自定義導航功能。
(1) 新建一個Web站點Ex7_7。
(2) 在【解決方案資源管理器】中,添加Web窗體頁Program.aspx、Csharp.aspx、JAVA.aspx、VB.aspx。
(3) 在Default.aspx中,切換到【設計】視圖,向其中添加一個Menu控件。并設置其Orientation屬性為Horizontal。
(4) 在Default.aspx中選擇Menu1控件,在【屬性】窗體中找到Items選項,單擊其右邊的【…】按鈕打開【菜單項編輯器】對話框,在其中菜單項并設置其相應屬性。如圖7-6所示。
(點擊查看大圖)圖7-6 【菜單項編輯器】對話框
(5) 菜單項設置完畢,單擊【確定】按鈕。這時在【源】窗口中可以看到VWD 2008自動生成如下代碼:
1. asp:Menu ID="Menu1" runat="server" Font-Italic
="False" ForeColor="Fuchsia"
2. Orientation="Horizontal" StaticDisplayLevels="1"
3. Items
4. asp:MenuItem NavigateUrl="~/Default.aspx"
Text="首頁" Value="首頁"/asp:MenuItem
5. asp:MenuItem NavigateUrl="~/Program.aspx"
Text="程序設計語言" Value="程序設計語言"/
6. asp:MenuItem NavigateUrl="~/Csharp.aspx"
Text="Visual C#" Value="Visual C#" /
7. asp:MenuItem NavigateUrl="~/VB.aspx"
Text="VB.NET" Value="VB.NET" /asp:MenuItem
8. asp:MenuItem NavigateUrl="~/JAVA.aspx"
Text="JAVA" Value="JAVA"/asp:MenuItem
9. asp:MenuItem Text="新聞" Value="新聞"/asp:MenuItem
10. /Items
11. /asp:Menu
上述 MenuItem 控件標記是定義在 Items 區(qū)段,可以定義菜單的選項,Text屬性是菜單項名稱,或是使用ImageUrl屬性指定菜單項圖片,NavigateUrl屬性是菜單連接的URL網址。
(6) 切換到Default.aspx中,按Ctrl+F5鍵,在瀏覽器中執(zhí)行程序,查看執(zhí)行結果。
7.3.3 利用Menu控件實現(xiàn)自定義導航(2)
2. 從SiteMapDataSource控件獲取菜單數據
Menu 控件的菜單數據源如果是 SiteMapDataSource 數據源控件,在 ASP.NET 程序中需要創(chuàng)建此控件,如下所示:
1. asp:SiteMapDataSource Id="sitemap" Runat="server"/
上述標記建立名為 sitemap 的 SiteMapDataSource 數據源控件,在Menu控件中是使用 DataSourceID 屬性來指定數據源,如下所示。
1. asp:Menu id="Menu1" Runat="Server"
2. StaticDisplayLevels="2" DataSourceID="sitemap"
3. StaticMenuItemStyle-VerticalPadding="3"
4. …
5. DynamicHoverStyle-ForeColor="black"/
【例7-8】演示從SiteMapDataSource控件獲取菜單數據方法。
(1) 復制Web站點Ex7_6,修改其名稱為Ex7_8。
(2) 在VWD 2008中打開Ex7_8。
(3) 在【解決方案資源管理器】雙擊Default.aspx,從【工具箱】的【導航】類別中,拖動一個Menu控件放到DIV標記之間。生成的代碼如下所示:
1. asp:Menu ID="Menu1" runat="server" /asp:Menu
(4) 切換到【設計】視圖。單擊Menu控件的智能標記(灰色右箭頭)打開【Menu任務】快捷菜單。在【選擇數據源】下拉列表中選擇【新建數據源】。在出現(xiàn)的【數據源配置向導】對話框中單擊【站點地圖】圖標。如圖7-7所示。
(5) 單擊【確定】按鈕關閉對話框。
(6) 當返回頁面時,Menu控件現(xiàn)在顯示了頂級元素【主頁】(如圖7-8所示)。這時,可以看到VWD 2008在【源】視圖窗口中自動添加了SiteMapDataSource控件,同時給Menu控件添加了DataSourceID="SiteMapDataSource1"的屬性值。生成的代碼如下所示:
(點擊查看大圖)圖7-7 【數據源配置向導】對話框
(點擊查看大圖)圖7-8 添加了SiteMapDataSource控件后顯示的結果
1. asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1"
2. /asp:Menu
3. asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /
(7) 再單擊一次SiteMapDataSource,然后按F4鍵打開或激活【屬性】窗口。將Show StartingNote屬性的值由True改為False。注意,一旦這樣做后,設計器中的Menu控件就會更新,并顯示根元素下的所有直接子菜單。
(8) 再次單擊Menu控件,然后用【屬性】窗口對控件的屬性作下列修改,如表7-5所示。
表7-5 Menu控件屬性的設置
特 性 值
StaticEnableDefaultPopOutImage False
Orientation Horizontal
ItemSpacing(需要展開的StaticMenuItemStyle的子特性) 10px
(9) 按Ctrl+F5鍵,在瀏覽器中打開頁面。當把鼠標放在【計算機類】主菜單時,會自動顯示其下拉菜單,選擇【硬件】命令,執(zhí)行結果如圖7-9所示。
22.3 實現(xiàn)Menu控件的導航
Menu控件是一個頁面上使用的菜單。該控件有靜態(tài)模式和動態(tài)模式兩種顯示模式,靜態(tài)模式的菜單項始終是完全展開的,在這種模式下,設置StaticDisplayLevels屬性指定顯示菜單的級別,如果菜單的級別超過了StaticDisplayLevels屬性指定的值,則把超過的級別自動設置為動態(tài)模式顯示。動態(tài)模式需要響應用戶的鼠標事件才在父節(jié)點上顯示子菜單項,MaximumDynamicDisplayLevels屬性指定動態(tài)菜單的顯示級別,如果菜單的級別超過了該屬性指定的值,則不顯示超過的級別。
Menu控件最簡單的用法是在設計視圖中使用Items屬性添加MenuItem對象的集合。MenuItem對象有一個NavigateUrl屬性,如果設置了該屬性,單擊菜單項后將導航到指定的頁面,可以使用Menu控件的Target屬性指定打開頁的位置,MenuItem對象也有一個Target屬性,可以單獨指定打開頁面的位置。如果沒有設置NavigateUrl屬性,則把頁面提交到服務器進行處理。本示例將演示如何使用Menu控件實現(xiàn)導航。
技術要點
使用Menu控件實現(xiàn)導航的技術要點如下。
?
MenuItem對象表示菜單的一項通過該對象的屬性可以設置菜單的內容和導航方式。
?
Menu控件的項可以使用設計器和編程兩種方法添加。
?
StaticDisplayLevels屬性指定靜態(tài)菜單的顯示級別。
實現(xiàn)步驟
(1)在VS2008中創(chuàng)建一個ASP.NET網站,命名為“MenuSample”。
(2)添加一個頁面,命名為“Menu.aspx”,并把這個頁設置為起始頁。
(3)從工具箱選擇Menu控件設計頁面,并在窗口的Items屬性中打開編輯菜單項的界面,添加“系統(tǒng)操作”和“幫助”兩個根菜單項,如圖22.3所示。
(點擊查看大圖)圖22.3 添加根菜單項
(4)在首次加載頁面時,用編程的方式,指定Menu控件的一些屬性,并為兩個根菜單項添加子菜單。代碼如下所示。
%@ Page Language="C#" AutoEventWireup="true" %
script runat="server"
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.Menu1.Orientation = Orientation.Horizontal;//設置菜單水平顯示
this.Menu1.StaticDisplayLevels = 1;//只顯示第一級菜單
this.Menu1.Target = "_blank";//指定在新的窗口打開頁面
MenuItem register = new MenuItem();//定義子菜單
register.Text = "注冊用戶";
register.NavigateUrl = "~/register.aspx";
this.Menu1.Items[0].ChildItems.Add(register);//添加子菜單
MenuItem Login = new MenuItem();
Login.Text = "登錄";
Login.NavigateUrl = "~/Login.aspx";
this.Menu1.Items[0].ChildItems.Add(Login);
MenuItem help = new MenuItem();//定義第二項菜單的子菜單
help.Text = "幫助";
help.NavigateUrl = "~/help.aspx";
this.Menu1.Items[1].ChildItems.Add(help);
MenuItem About = new MenuItem();
About.Text = "關于";
About.NavigateUrl = "~/About.aspx";
this.Menu1.Items[1].ChildItems.Add(About);
}
}
/script
html xmlns=""
head runat="server"
titleMenu使用示例/title
/head
body
form id="form1" runat="server"
div
asp:Menu ID="Menu1" runat="server"
Items
asp:MenuItem Text="系統(tǒng)操作" Value="系統(tǒng)操作"/asp:MenuItem
asp:MenuItem Text="幫助" Value="幫助"/asp:MenuItem
/Items
/asp:Menu
/div
/form
/body
/html
(5)按Ctrl+F5組合鍵運行程序,運行結果如圖22.4所示。
圖22.4 運行結果
源程序解讀
(1)Menu控件的StaticDisplayLevels屬性設置為1,表示只靜態(tài)顯示根菜單項,其子菜單動態(tài)顯示。
(2)Target屬性指定單擊菜單項打開新頁面的位置,該屬性的級別低于MenuItem類的Target屬性,當兩個對象同時指定Target屬性時,MenuItem類的Target屬性優(yōu)先。
(3)MenuItem類的NavigateUrl屬性用于指定URL地址。
、
在.net的導航控件中,我用的最多的是TreeView控件,今天無意間用到了menu控件,感覺挺好的.寫出來當作筆記吧!
前臺代碼:
asp:Menu ID="Menu1" runat="server" BackColor="#FFFBD6" DynamicHorizontalOffset="2"
ForeColor="#990000" Height="187px" Orientation="Horizontal" StaticSubMenuIndent="10px"
Style="font-size: 8pt; font-family: Verdana; display: block; background-position-x: center; background-attachment: scroll; background-image: url(img/Alter.jpg); visibility: visible; color: #ff3399; background-repeat: repeat-x; position: static; background-color: #99ff00; text-align: center;" Font-Names="Verdana" Font-Size="0.8em" Width="594px" OnMenuItemClick="Menu1_MenuItemClick"
StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" /
DynamicHoverStyle BackColor="#990000" ForeColor="White" /
DynamicMenuStyle BackColor="#FFFBD6" BorderColor="White" BorderStyle="Solid" BorderWidth="1px" /
StaticSelectedStyle BackColor="#FFCC66" /
DynamicSelectedStyle BackColor="#FFCC66" /
StaticHoverStyle BackColor="#990000" ForeColor="White" /
DynamicMenuItemStyle BackColor="#B5C7DE" Font-Names="Verdana" Font-Size="8pt" BorderColor="White" BorderStyle="Solid" BorderWidth="1px" HorizontalPadding="5px" VerticalPadding="2px" /
/asp:Menu
后臺代碼:
#region 頁面初始化
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PR.BLL.menu.A_Menu bll = new PR.BLL.menu.A_Menu();
DataSet ds = bll.GetList();
CreateMenu(1, (MenuItem)null, ds);
}
}
#endregion
#region 遞歸生成橫向菜單
public void CreateMenu(int ParentID, MenuItem tempItem, DataSet ds)
{
DataView dvMenu = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前菜單的所有子節(jié)點
dvMenu.RowFilter = "[MenuParentId] = " + ParentID;
foreach (DataRowView Row in dvMenu)
{
if (tempItem == null)
{ //添加根節(jié)點
MenuItem Node = new MenuItem();
//節(jié)點的文本
Node.Text = Row["FMenuName"].ToString();
//節(jié)點旁邊的圖片
// Node.ImageUrl = "img/" + Row["MenuImage"].ToString();
//有子菜單時的圖片
//Node.PopOutImageUrl = "img/02.gif";
this.Menu1.Items.Add(Node);
CreateMenu(Int32.Parse(Row["Fid"].ToString()), Node, ds);//再次遞歸
}
else
{ //添加當前節(jié)點的子節(jié)點
MenuItem Node = new MenuItem();
Node.Text = Row["FMenuName"].ToString();
//點擊節(jié)點后的連接地址
Node.NavigateUrl = Row["Url"].ToString();
//Node.ImageUrl = "Image/" + Row["MenuImage"].ToString();
//Node.Target = Row["left"].ToString();
tempItem.ChildItems.Add(Node);
CreateMenu(Int32.Parse(Row["Fid"].ToString()), Node, ds); //再次遞歸
}
}
}
#endregion
當前文章:vb.net橫向菜單的簡單介紹
網站URL:http://chinadenli.net/article10/dsicpgo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供App設計、移動網站建設、電子商務、搜索引擎優(yōu)化、網站導航、小程序開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)