因为以前看惯了sharepoint的菜单后,才发现VS2005 中的WebPart与那个sharepoint的WepPart 不太一样。特别是在WebPartZone菜单下的用户定制很不相同。有关 sharepoint下的菜单订制请 参见http://www.cnblogs.com/ocean/archive/2005/03/17/120093.html。 后来在网上没有见到太多关于VS2005 WebPart控件菜单订制的文章,有的也只是一带而过, 没办法,只能去看MSDN了,好在VS2005中的MSDN有下面的解释: You can override the OnCreateVerbs method in a derived WebPartZoneBase zone class to add
additional WebPartVerb objects to the collection of standard verbs in your zone.
You can do this by adding verbs to the collection in the Verbs property.
同时示例代码如下:
1using System; 2using System.Data; 3using System.Configuration; 4using System.Web; 5using System.Web.Security; 6using System.Security.Permissions; 7using System.Collections.Generic; 8using System.Web.UI; 9using System.Web.UI.WebControls; 10using System.Web.UI.WebControls.WebParts; 11using System.Web.UI.HtmlControls; 12 13namespace Samples.AspNet.CS.Controls 14{ 15/**//* 16This code sample creates a Web Part zone and adds the 17"Copy Web Part" verb to any control in the zone. 18*/ 19[AspNetHostingPermission(SecurityAction.Demand, 20 Level = AspNetHostingPermissionLevel.Minimal)] 21[AspNetHostingPermission(SecurityAction.InheritanceDemand, 22 Level = AspNetHostingPermissionLevel.Minimal)] 23publicclass ZoneWithAddedVerb : WebPartZone 24{ 25 26protectedoverridevoid OnCreateVerbs(WebPartVerbsEventArgs e) 27{ 28 List<WebPartVerb> newVerbs =new List<WebPartVerb>(); 29 newVerbs.Add(new CopyWebPartVerb(CopyWebPartToNewOne)); 30 e.Verbs =new WebPartVerbCollection(e.Verbs,newVerbs); 31base.OnCreateVerbs(e); 32 } 33 34void CopyWebPartToNewOne(object sender, WebPartEventArgs e) 35{ 36 WebPartManager wpmgr = 37 WebPartManager.GetCurrentWebPartManager(Page); 38 System.Web.UI.WebControls.WebParts.WebPart wp; 39 Type tp = e.WebPart.GetType(); 40 wp = (System.Web.UI.WebControls.WebParts.WebPart)Activator.CreateInstance(tp); 41 wpmgr.AddWebPart(wp, e.WebPart.Zone, e.WebPart.ZoneIndex +1); 42 } 43} 44 [AspNetHostingPermission(SecurityAction.Demand, 45 Level = AspNetHostingPermissionLevel.Minimal)] 46 [AspNetHostingPermission(SecurityAction.InheritanceDemand, 47 Level = AspNetHostingPermissionLevel.Minimal)] 48internalclass CopyWebPartVerb : WebPartVerb 49{ 50privateconst String _copyWebPartImageUrl ="~/CopyVerb.ico"; 51 52internal CopyWebPartVerb(WebPartEventHandler serverClickHandler) : 53base("MyVerb", serverClickHandler) 54{ } 55publicoverridestring Text 56{ 57get{ return"Copy Web Part"; } 58set{ ;} 59 } 60publicoverridestring Description 61{ 62get{ return"This verb will copy this web part control "+ 63"to a new one below"; } 64set{ ; } 65 } 66publicoverridebool Enabled 67{ 68get{ returnbase.Enabled; } 69set{ base.Enabled = value; } 70 } 71 72publicoverridestring ImageUrl 73{ 74get{ return _copyWebPartImageUrl; } 75set{ ; } 76 } 77 } 78} 79