Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
来源:互联网 发布:婚礼logo设计软件 编辑:程序博客网 时间:2024/05/12 06:16
(一). 概述
1. 当鼠标悬浮到控件对象上, 右击, 会弹出此自定义控件.
2. 仅当控件支持oncontextmenu事件. 另外, 与其功能类似的控件[浮动Toobar自定义控件]
(二). 运行如图
(三). 用法
1. 将PopupTraceMenur控件Dll添加引用到Web站点工程中
2. 从工具箱拖动一个PopupTraceMenu控件和另一个支持oncontextmenu事件的控件到设计器中,
比如:
3. 设置PopupTraceMenur的属性TargetControl=GridView1
4. F5运行即可
(四). 完整代码
1. 主控件PopupTraceMenu.cs代码
2 /// Author: ChengKing(ZhengJian)
3 ///
4 [DefaultProperty("TargetControl")]
5 [ToolboxData("<{0}:PopupTraceMenu runat=server>{0}:PopupTraceMenu>")]
6 //[Designer(typeof(System.ComponentModel.Design.DesignerCollection))]
7 public class PopupTraceMenu : Control, IComponent
8 {
9
10 [Bindable(true)]
11 [Category("Appearance")]
12 [DefaultValue("[PopupTraceMenu /"PopupTraceMenu11/"]")]
13 [Localizable(true)]
14 public string Text
15 {
16 get
17 {
18 String s = (String)ViewState["Text"];
19 return ((s == null) ? String.Empty : s);
20 }
21
22 set
23 {
24 ViewState["Text"] = value;
25 }
26 }
27
28 [Bindable(true)]
29 [Category("Appearance")]
30 [DefaultValue("")]
31 [Description("设置此控件的寄主控件")]
32 [TypeConverter(typeof(ControlIDConverter))]
33 public string TargetControl
34 {
35 get
36 {
37 String s = (String)ViewState["TargetControl"];
38 return ((s == null) ? String.Empty : s);
39 }
40 set
41 {
42 ViewState["TargetControl"] = value;
43 }
44 }
45
46 protected override void Render(HtmlTextWriter writer)
47 {
48 if (DesignMode)
49 {
50 this.Controls.Clear();
51 LiteralControl lc = new LiteralControl();
52 lc.Text = this.Text;
53 this.Controls.Add(lc);
54 }
55 base.Render(writer);
56 }
57
58 protected override void CreateChildControls()
59 {
60 base.CreateChildControls();
61 }
62
63 protected override void OnPreRender(EventArgs e)
64 {
65
66 if (!Page.ClientScript.IsClientScriptBlockRegistered("BuildMenu"))
67 {
68 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "BuildMenu",
69 "");
70 }
71
72 Control targetControl = this.FindControl(TargetControl);
73
74 StringBuilder strInitScript = new StringBuilder();
75 if (targetControl != null)
76 {
77 strInitScript.Append(" ");
78 strInitScript.Append(" writeStyle(); makeMenu(); ");
79 strInitScript.Append(" if( document.all&&window.print ) ");
80 strInitScript.Append(" { ");
81 strInitScript.Append(" var objClientId = '" + targetControl.ClientID + "';");
82 strInitScript.Append(" if(objClientId != null) ");
83 strInitScript.Append(" {");
84 strInitScript.Append(" var obj = document.getElementById(objClientId);");
85 strInitScript.Append(" document.onclick = hideMenu; ");
86 strInitScript.Append(" obj.oncontextmenu = showMenu;");
87 strInitScript.Append(" }");
88 strInitScript.Append(" else {alert('Please Set TargetControl Property!')}");
89 strInitScript.Append(" } ");
90 strInitScript.Append("");
91 }
92 else
93 {
94 strInitScript.Append(" ");
95 strInitScript.Append(" alert('Please Set TargetControl Property!'); ");
96 strInitScript.Append("");
97 }
98 if (!Page.ClientScript.IsStartupScriptRegistered("InitScript"))
99 {
100 Page.ClientScript.RegisterStartupScript(this.GetType(), "InitScript",
101 strInitScript.ToString());
102 }
103
104 base.OnPreRender(e);
105 }
106 }
2. 测试页面文件default.aspx代码
1 <div>
2 <asp:GridView ID="GridView1" runat="server" asp:GridView>
3 <cc1:PopupTraceMenu ID="PopupTraceMenu1" runat="server" TargetControl= "GridView1">
cc1:PopupTraceMenu>
4 div>
(五). 示例代码下载
http://www.cnblogs.com/Files/MVP33650/自定义控件开发--[右键菜单].rar
(六). 控件开发其它相关文章:
http://blog.csdn.net/ChengKing/category/288694.aspx
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- 在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98~102之间的组合
- Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]
- Win32 vs. ATL Windows Programming铪
- 对比WINX,WTL,MFC,SmartWin代码效率
- 软件测试过程的监控方法
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- 十年MFC经历认识的Microsoft技术【原创】
- C++ Gotchas 条款1及条款17
- SELECT 赋值与ORDER BY冲突的问题
- WINX如何做到可视化界面开发
- AOP, Signal/Slot, and Decoupling
- Asp.net 2.0 自定义控件开发[创建自定义HeaderRow的GridView控件][示例代码下载]
- c# 连接各类数据库的集合类
- kingofark's Ineffective C/C++:低手自序