不清楚熱鍵和快捷鍵是什么區(qū)別
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的騰沖網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1.如果你是指Chrl+S這樣的快捷鍵,可以設(shè)置ShortCutKeys屬性,屬性窗口就有可視化編輯器。
2.如果你是指"保存(S)",其中s有下劃線這樣的用Alt+字母來訪問的設(shè)置,應(yīng)該在菜單項的Text屬性中使用符號。符號后面的字母將被作為快速訪問字符,顯示的時候不會被顯示出來,而字母會自動加上下劃線。比如"保存(s)"。
3.和選中標記有關(guān)的屬性有兩個
CheckOnClick 在菜單項上單擊時是否改變Checked屬性
Checked 設(shè)置/獲取 菜單項是否被選中
4.設(shè)置菜單項的Enabled屬性為False
工具箱里有ContextMenu(.NET2.0以后名字有點變化,大概差不多),你加入窗體后就可以像編輯普通菜單那樣編輯。
編輯好后,選中你要添加菜單的控件。屬性窗口里有個ContextMenu屬性,在里面選你剛才建立的ContextMenu
以下是我以前用過的資料,應(yīng)該對你有幫助的.
Menu 菜單控件可以建立水平或垂直方向的菜單。asp:Menu控件非常容易使用與調(diào)整??梢允褂?MenuItem 控件來建立靜態(tài)菜單,或是從 SiteMapDataSource 數(shù)據(jù)源控件建立動態(tài)菜單。Menu 菜單控件有80個公有屬性(包括所有控件都擁有的共同屬性)。Menu控件的常用屬性如表7-4所示。
表7-4 Menu 控件的常用屬性
屬 性 屬 性 描 述
CssClass 允許設(shè)置一個應(yīng)用到整個控件的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 確定控件能顯示的子菜單項的級數(shù)。
有助于非常大的站點地圖限制發(fā)送給瀏覽器的項數(shù)
Menu控件包含幾個以Static或Dynamic開頭的特性。Static特性用來控制加載頁面時出現(xiàn)的主菜單項。因為把鼠標懸停在它們上面時它們不會改變或隱藏,所以認為它們是靜態(tài)的。子菜單是動態(tài)的,因為只有當激活相關(guān)主菜單項時它們才會出現(xiàn)。
1. 靜態(tài)菜單
Menu控件可以使用MenuItem控件定義菜單數(shù)據(jù)來建立靜態(tài)菜單。下面舉例說明在VWD2008中創(chuàng)建靜態(tài)菜單的方法。
【例7-7】利用Menu控件在網(wǎng)頁中添加一個菜單,實現(xiàn)自定義導(dǎo)航功能。
(1) 新建一個Web站點Ex7_7。
(2) 在【解決方案資源管理器】中,添加Web窗體頁Program.aspx、Csharp.aspx、JAVA.aspx、VB.aspx。
(3) 在Default.aspx中,切換到【設(shè)計】視圖,向其中添加一個Menu控件。并設(shè)置其Orientation屬性為Horizontal。
(4) 在Default.aspx中選擇Menu1控件,在【屬性】窗體中找到Items選項,單擊其右邊的【…】按鈕打開【菜單項編輯器】對話框,在其中菜單項并設(shè)置其相應(yīng)屬性。如圖7-6所示。
(點擊查看大圖)圖7-6 【菜單項編輯器】對話框
(5) 菜單項設(shè)置完畢,單擊【確定】按鈕。這時在【源】窗口中可以看到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="程序設(shè)計語言" Value="程序設(shè)計語言"/
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網(wǎng)址。
(6) 切換到Default.aspx中,按Ctrl+F5鍵,在瀏覽器中執(zhí)行程序,查看執(zhí)行結(jié)果。
7.3.3 利用Menu控件實現(xiàn)自定義導(dǎo)航(2)
2. 從SiteMapDataSource控件獲取菜單數(shù)據(jù)
Menu 控件的菜單數(shù)據(jù)源如果是 SiteMapDataSource 數(shù)據(jù)源控件,在 ASP.NET 程序中需要創(chuàng)建此控件,如下所示:
1. asp:SiteMapDataSource Id="sitemap" Runat="server"/
上述標記建立名為 sitemap 的 SiteMapDataSource 數(shù)據(jù)源控件,在Menu控件中是使用 DataSourceID 屬性來指定數(shù)據(jù)源,如下所示。
1. asp:Menu id="Menu1" Runat="Server"
2. StaticDisplayLevels="2" DataSourceID="sitemap"
3. StaticMenuItemStyle-VerticalPadding="3"
4. …
5. DynamicHoverStyle-ForeColor="black"/
【例7-8】演示從SiteMapDataSource控件獲取菜單數(shù)據(jù)方法。
(1) 復(fù)制Web站點Ex7_6,修改其名稱為Ex7_8。
(2) 在VWD 2008中打開Ex7_8。
(3) 在【解決方案資源管理器】雙擊Default.aspx,從【工具箱】的【導(dǎo)航】類別中,拖動一個Menu控件放到DIV標記之間。生成的代碼如下所示:
1. asp:Menu ID="Menu1" runat="server" /asp:Menu
(4) 切換到【設(shè)計】視圖。單擊Menu控件的智能標記(灰色右箭頭)打開【Menu任務(wù)】快捷菜單。在【選擇數(shù)據(jù)源】下拉列表中選擇【新建數(shù)據(jù)源】。在出現(xiàn)的【數(shù)據(jù)源配置向?qū)А繉υ捒蛑袉螕簟菊军c地圖】圖標。如圖7-7所示。
(5) 單擊【確定】按鈕關(guān)閉對話框。
(6) 當返回頁面時,Menu控件現(xiàn)在顯示了頂級元素【主頁】(如圖7-8所示)。這時,可以看到VWD 2008在【源】視圖窗口中自動添加了SiteMapDataSource控件,同時給Menu控件添加了DataSourceID="SiteMapDataSource1"的屬性值。生成的代碼如下所示:
(點擊查看大圖)圖7-7 【數(shù)據(jù)源配置向?qū)А繉υ捒?/p>
(點擊查看大圖)圖7-8 添加了SiteMapDataSource控件后顯示的結(jié)果
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。注意,一旦這樣做后,設(shè)計器中的Menu控件就會更新,并顯示根元素下的所有直接子菜單。
(8) 再次單擊Menu控件,然后用【屬性】窗口對控件的屬性作下列修改,如表7-5所示。
表7-5 Menu控件屬性的設(shè)置
特 性 值
StaticEnableDefaultPopOutImage False
Orientation Horizontal
ItemSpacing(需要展開的StaticMenuItemStyle的子特性) 10px
(9) 按Ctrl+F5鍵,在瀏覽器中打開頁面。當把鼠標放在【計算機類】主菜單時,會自動顯示其下拉菜單,選擇【硬件】命令,執(zhí)行結(jié)果如圖7-9所示。
22.3 實現(xiàn)Menu控件的導(dǎo)航
Menu控件是一個頁面上使用的菜單。該控件有靜態(tài)模式和動態(tài)模式兩種顯示模式,靜態(tài)模式的菜單項始終是完全展開的,在這種模式下,設(shè)置StaticDisplayLevels屬性指定顯示菜單的級別,如果菜單的級別超過了StaticDisplayLevels屬性指定的值,則把超過的級別自動設(shè)置為動態(tài)模式顯示。動態(tài)模式需要響應(yīng)用戶的鼠標事件才在父節(jié)點上顯示子菜單項,MaximumDynamicDisplayLevels屬性指定動態(tài)菜單的顯示級別,如果菜單的級別超過了該屬性指定的值,則不顯示超過的級別。
Menu控件最簡單的用法是在設(shè)計視圖中使用Items屬性添加MenuItem對象的集合。MenuItem對象有一個NavigateUrl屬性,如果設(shè)置了該屬性,單擊菜單項后將導(dǎo)航到指定的頁面,可以使用Menu控件的Target屬性指定打開頁的位置,MenuItem對象也有一個Target屬性,可以單獨指定打開頁面的位置。如果沒有設(shè)置NavigateUrl屬性,則把頁面提交到服務(wù)器進行處理。本示例將演示如何使用Menu控件實現(xiàn)導(dǎo)航。
技術(shù)要點
使用Menu控件實現(xiàn)導(dǎo)航的技術(shù)要點如下。
?
MenuItem對象表示菜單的一項通過該對象的屬性可以設(shè)置菜單的內(nèi)容和導(dǎo)航方式。
?
Menu控件的項可以使用設(shè)計器和編程兩種方法添加。
?
StaticDisplayLevels屬性指定靜態(tài)菜單的顯示級別。
實現(xiàn)步驟
(1)在VS2008中創(chuàng)建一個ASP.NET網(wǎng)站,命名為“MenuSample”。
(2)添加一個頁面,命名為“Menu.aspx”,并把這個頁設(shè)置為起始頁。
(3)從工具箱選擇Menu控件設(shè)計頁面,并在窗口的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;//設(shè)置菜單水平顯示
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 = "關(guān)于";
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組合鍵運行程序,運行結(jié)果如圖22.4所示。
圖22.4 運行結(jié)果
源程序解讀
(1)Menu控件的StaticDisplayLevels屬性設(shè)置為1,表示只靜態(tài)顯示根菜單項,其子菜單動態(tài)顯示。
(2)Target屬性指定單擊菜單項打開新頁面的位置,該屬性的級別低于MenuItem類的Target屬性,當兩個對象同時指定Target屬性時,MenuItem類的Target屬性優(yōu)先。
(3)MenuItem類的NavigateUrl屬性用于指定URL地址。
、
在.net的導(dǎo)航控件中,我用的最多的是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
ToolStripMenuItem.ShortcutKeys 屬性
獲取或設(shè)置與 ToolStripMenuItem 關(guān)聯(lián)的快捷鍵。
使用 ShortcutKeys 屬性可以將組合鍵分配給菜單命令,例如,將 Ctrl+C 分配給“復(fù)制”命令。 您可以使用快捷鍵而不使用訪問鍵,也可以同時使用快捷鍵和訪問鍵,訪問鍵是菜單或菜單項中與 Alt 鍵一起使用的帶下劃線的字母。 通過在要用于訪問鍵的字母前面鍵入一個“and”符 (),可以在代碼中定義訪問鍵。