前两天在整理电脑资料时,发现这两个已被打入"冷宫"的控件。
运行效果如下:
其中的右击菜单控件的js源码是从milonic网站(一个商业JS库)上搜集来的, 本人觉得它的"生成菜单项"部分
非常不好用,所以自己封装了它的部分代码,用一个 XML文件记录相应的菜单项,并用cs写了一个递归来加载XML
中的菜单项,以实现控件绑定。
代码如下:
而另一个顶部菜单源码(c#)最早是从codeproject上得到的, 原作者我已忘记了,本人在这个控件基础上加上了图片菜单项
(修改 xsl),相信如果大家有Css基础的话,只要改一下相应的menu.css中的代码就会得到诸如 XP风格等样式的菜单了。另外因
为原作者写的代码扩展性很好,大家可以加入更多的个性化的元素。
1
protected
override
void
Render(HtmlTextWriter output)
2 {
3
4 output.Write("<script type=/"text/javascript/" src=/""+ScriptPath+"/contextmenu.
5 js/"></script>/r/n");
6
7 output.Write("<script type=/"text/javascript/">/r/n");
8
9 output.Write("fixMozillaZIndex=true;/r/n");
10 output.Write("_menuCloseDelay=500;/r/n");
11 output.Write("_menuOpenDelay=150;/r/n");
12 output.Write("_subOffsetTop=2;/r/n");
13 output.Write("_subOffsetLeft=-2;/r/n");
14
15 output.Write("with(contextStyle=new mm_style())/r/n");
16 output.Write("{/r/n");
17 output.Write("bordercolor=/"#999999/";/r/n");
18 output.Write("borderstyle=/"solid/";/r/n");
19 output.Write("borderwidth=1;/r/n");
20 output.Write("fontfamily=/"arial, verdana, tahoma/";/r/n");
21 output.Write("fontsize=/"75%/";/r/n");
22 output.Write("fontstyle=/"normal/";/r/n");
23 output.Write("headerbgcolor=/"#4F8EB6/";/r/n");
24 output.Write("headerborder=1;/r/n");
25 output.Write("headercolor=/"#ffffff/";/r/n");
26 output.Write("offbgcolor=/"#ffffff/";/r/n");
27 output.Write("offcolor=/"#000000/";/r/n");
28 output.Write("onbgcolor=/"#ECF4F9/";/r/n");
29 output.Write("onborder=/"1px solid #316AC5/";/r/n");
30 output.Write("oncolor=/"#000000/";/r/n");
31 output.Write("outfilter=/"randomdissolve(duration=0.4)/";/r/n");
32 output.Write("overfilter=/"Fade(duration=0.2);Shadow(color=#777777', Direction=135,
33 Strength=3)/";/r/n");
34 output.Write("padding=3;/r/n");
35 output.Write("pagebgcolor=/"#eeeeee/";/r/n");
36 output.Write("pageborder=/"1px solid #ffffff/";/r/n");
37 output.Write("pageimage=/""+this.ImageUrl+"/pageimg.gif/";/r/n");
38 output.Write("separatorcolor=/"#999999/";/r/n");
39 output.Write("subimage=/""+this.ImageUrl+"/subarrow.gif/";/r/n");
40 output.Write("}/r/n");
41
42 output.Write("with(milonic=new menuname(/"contextMenu/")){/r/n");
43 output.Write("margin=3;/r/n");
44 output.Write("style=contextStyle;/r/n");
45 output.Write("top=/"offset=2/";/r/n");
46
47 DataSet dsSrc = new DataSet();
48 dsSrc.ReadXml(System.Web.HttpContext.Current.Server.MapPath(this.XmlFileFullPathName));
49
50 string result="";
51 foreach(System.Data.DataRow dr in dsSrc.Tables[0].Select("parentid=0"))
52 {
53
54 输出主菜单#region 输出主菜单
55 output.Write("aI(/"");
56 if(dr["imgurl"].ToString().Trim()!="")
57 {
58 output.Write("image="+ this.ImageUrl + "/" + dr["imgurl"].ToString().
59 Trim()+";");
60 }
61
62 if(dr["showmenu"].ToString().Trim()!="")
63 {
64 output.Write("showmenu="+dr["menuid"].ToString().Trim()+";");
65 result += LoadSubMenuItem(dsSrc,dr["menuid"].ToString().Trim(),
66 dr["itemwidth"].ToString().Trim(),dr["margin"].ToString().Trim());
67 }
68
69 if(dr["separatorsize"].ToString().Trim()!="")
70 {
71 output.Write("separatorsize="+dr["separatorsize"].ToString().Trim()+";");
72 }
73
74 if(dr["menutitle"].ToString().Trim()!="")
75 {
76 output.Write("text="+dr["menutitle"].ToString().Trim()+";");
77 }
78
79 if(dr["url"].ToString().Trim()!="")
80 {
81 output.Write("url="+dr["url"].ToString().Trim()+";");
82 }
83
84 output.Write("/");/r/n");
85 #endregion
86 }
87
88 output.Write("}/r/n");
89 output.Write(result);
90 output.Write("drawMenus();/r/n");
91
92 output.Write("</script>/r/n");
93 }
94
95 private string LoadSubMenuItem(DataSet dsSrc , string parentid, string itemwidth, string margin)
96 {
97 StringBuilder sb=new StringBuilder();
98
99 DataRow[] drs = dsSrc.Tables[0].Select("parentid="+parentid);
100 if(drs.Length>0)
101 {
102
103 sb.Append("with(milonic=new menuname(/""+parentid+"/")){/r/n");
104 sb.Append("itemwidth="+(itemwidth==""?"127":itemwidth)+";/r/n");
105 sb.Append("margin="+(margin==""?"3":margin)+";/r/n");
106 sb.Append("overflow=/"scroll/";/r/n");
107 sb.Append("style=contextStyle;/r/n");
108
109 string result="";
110 foreach(DataRow dr in drs)
111 {
112 输出主菜单#region 输出主菜单
113 sb.Append("aI(/"");
114 if(dr["imgurl"].ToString().Trim()!="")
115 {
116 sb.Append("image="+ this.ImageUrl + "/" + dr["imgurl"].ToString().
117 Trim()+";");
118 }
119
120 string a=dr["showmenu"].ToString().Trim();
121 if(dr["showmenu"].ToString().Trim()!="")
122 {
123 sb.Append("showmenu="+dr["menuid"].ToString().Trim()+";");
124 result += LoadSubMenuItem(dsSrc,dr["menuid"].ToString().Trim(),
125 dr["itemwidth"].ToString().Trim(),dr["margin"].ToString().Trim());
126 }
127
128 if(dr["separatorsize"].ToString().Trim()!="")
129 {
130 sb.Append("separatorsize="+dr["separatorsize"].ToString().Trim()+";");
131 }
132
133 if(dr["menutitle"].ToString().Trim()!="")
134 {
135 sb.Append("text="+dr["menutitle"].ToString().Trim()+";");
136 }
137
138 if(dr["url"].ToString().Trim()!="")
139 {
140 sb.Append("url="+dr["url"].ToString().Trim()+";");
141 }
142
143 sb.Append("/");/r/n");
144 #endregion
145 }
146 sb.Append("}/r/n");
147 sb.Append(result);
148 }
149 return sb.ToString();
150 }
151
152
2 {
3
4 output.Write("<script type=/"text/javascript/" src=/""+ScriptPath+"/contextmenu.
5 js/"></script>/r/n");
6
7 output.Write("<script type=/"text/javascript/">/r/n");
8
9 output.Write("fixMozillaZIndex=true;/r/n");
10 output.Write("_menuCloseDelay=500;/r/n");
11 output.Write("_menuOpenDelay=150;/r/n");
12 output.Write("_subOffsetTop=2;/r/n");
13 output.Write("_subOffsetLeft=-2;/r/n");
14
15 output.Write("with(contextStyle=new mm_style())/r/n");
16 output.Write("{/r/n");
17 output.Write("bordercolor=/"#999999/";/r/n");
18 output.Write("borderstyle=/"solid/";/r/n");
19 output.Write("borderwidth=1;/r/n");
20 output.Write("fontfamily=/"arial, verdana, tahoma/";/r/n");
21 output.Write("fontsize=/"75%/";/r/n");
22 output.Write("fontstyle=/"normal/";/r/n");
23 output.Write("headerbgcolor=/"#4F8EB6/";/r/n");
24 output.Write("headerborder=1;/r/n");
25 output.Write("headercolor=/"#ffffff/";/r/n");
26 output.Write("offbgcolor=/"#ffffff/";/r/n");
27 output.Write("offcolor=/"#000000/";/r/n");
28 output.Write("onbgcolor=/"#ECF4F9/";/r/n");
29 output.Write("onborder=/"1px solid #316AC5/";/r/n");
30 output.Write("oncolor=/"#000000/";/r/n");
31 output.Write("outfilter=/"randomdissolve(duration=0.4)/";/r/n");
32 output.Write("overfilter=/"Fade(duration=0.2);Shadow(color=#777777', Direction=135,
33 Strength=3)/";/r/n");
34 output.Write("padding=3;/r/n");
35 output.Write("pagebgcolor=/"#eeeeee/";/r/n");
36 output.Write("pageborder=/"1px solid #ffffff/";/r/n");
37 output.Write("pageimage=/""+this.ImageUrl+"/pageimg.gif/";/r/n");
38 output.Write("separatorcolor=/"#999999/";/r/n");
39 output.Write("subimage=/""+this.ImageUrl+"/subarrow.gif/";/r/n");
40 output.Write("}/r/n");
41
42 output.Write("with(milonic=new menuname(/"contextMenu/")){/r/n");
43 output.Write("margin=3;/r/n");
44 output.Write("style=contextStyle;/r/n");
45 output.Write("top=/"offset=2/";/r/n");
46
47 DataSet dsSrc = new DataSet();
48 dsSrc.ReadXml(System.Web.HttpContext.Current.Server.MapPath(this.XmlFileFullPathName));
49
50 string result="";
51 foreach(System.Data.DataRow dr in dsSrc.Tables[0].Select("parentid=0"))
52 {
53
54 输出主菜单#region 输出主菜单
55 output.Write("aI(/"");
56 if(dr["imgurl"].ToString().Trim()!="")
57 {
58 output.Write("image="+ this.ImageUrl + "/" + dr["imgurl"].ToString().
59 Trim()+";");
60 }
61
62 if(dr["showmenu"].ToString().Trim()!="")
63 {
64 output.Write("showmenu="+dr["menuid"].ToString().Trim()+";");
65 result += LoadSubMenuItem(dsSrc,dr["menuid"].ToString().Trim(),
66 dr["itemwidth"].ToString().Trim(),dr["margin"].ToString().Trim());
67 }
68
69 if(dr["separatorsize"].ToString().Trim()!="")
70 {
71 output.Write("separatorsize="+dr["separatorsize"].ToString().Trim()+";");
72 }
73
74 if(dr["menutitle"].ToString().Trim()!="")
75 {
76 output.Write("text="+dr["menutitle"].ToString().Trim()+";");
77 }
78
79 if(dr["url"].ToString().Trim()!="")
80 {
81 output.Write("url="+dr["url"].ToString().Trim()+";");
82 }
83
84 output.Write("/");/r/n");
85 #endregion
86 }
87
88 output.Write("}/r/n");
89 output.Write(result);
90 output.Write("drawMenus();/r/n");
91
92 output.Write("</script>/r/n");
93 }
94
95 private string LoadSubMenuItem(DataSet dsSrc , string parentid, string itemwidth, string margin)
96 {
97 StringBuilder sb=new StringBuilder();
98
99 DataRow[] drs = dsSrc.Tables[0].Select("parentid="+parentid);
100 if(drs.Length>0)
101 {
102
103 sb.Append("with(milonic=new menuname(/""+parentid+"/")){/r/n");
104 sb.Append("itemwidth="+(itemwidth==""?"127":itemwidth)+";/r/n");
105 sb.Append("margin="+(margin==""?"3":margin)+";/r/n");
106 sb.Append("overflow=/"scroll/";/r/n");
107 sb.Append("style=contextStyle;/r/n");
108
109 string result="";
110 foreach(DataRow dr in drs)
111 {
112 输出主菜单#region 输出主菜单
113 sb.Append("aI(/"");
114 if(dr["imgurl"].ToString().Trim()!="")
115 {
116 sb.Append("image="+ this.ImageUrl + "/" + dr["imgurl"].ToString().
117 Trim()+";");
118 }
119
120 string a=dr["showmenu"].ToString().Trim();
121 if(dr["showmenu"].ToString().Trim()!="")
122 {
123 sb.Append("showmenu="+dr["menuid"].ToString().Trim()+";");
124 result += LoadSubMenuItem(dsSrc,dr["menuid"].ToString().Trim(),
125 dr["itemwidth"].ToString().Trim(),dr["margin"].ToString().Trim());
126 }
127
128 if(dr["separatorsize"].ToString().Trim()!="")
129 {
130 sb.Append("separatorsize="+dr["separatorsize"].ToString().Trim()+";");
131 }
132
133 if(dr["menutitle"].ToString().Trim()!="")
134 {
135 sb.Append("text="+dr["menutitle"].ToString().Trim()+";");
136 }
137
138 if(dr["url"].ToString().Trim()!="")
139 {
140 sb.Append("url="+dr["url"].ToString().Trim()+";");
141 }
142
143 sb.Append("/");/r/n");
144 #endregion
145 }
146 sb.Append("}/r/n");
147 sb.Append(result);
148 }
149 return sb.ToString();
150 }
151
152
关键字:.net, 控件,control,菜单,mainmenu右击菜单,contextmenu,代震军,daizhj
下载链接(for vs2008):/Files/daizhj/ContextMenu.rar
http://www.cnblogs.com/daizhj/archive/2007/11/26/972583.html