`
lovnet
  • 浏览: 6690767 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]

阅读更多

(一). 概述

1. 当鼠标悬浮到控件对象上, 会弹出此自定义控件.

2. 具有通用性,只要支持 onmouseenter/onmouseleave 等几个事件方法的目标控件都可以使用此控件.

3. 此控件与前面自定义控件[右击弹出菜单]控件有些类似, 区别是这个控件客户端JavaScript部分有些麻烦.

(二). 运行如图

(三). 用法

1. 将FloatTraceMenu控件Dll添加引用到Web站点工程中

2. 从工具箱拖动一个FloatTraceMenu控件和另一个支持onmouseenter/onmouseleave 等事件

的控件到设计器中, 比如: <GridView id="GridView1" runat="server" /> <img id="img' /> 等

3. 设置FloatTraceMenu的属性指向目标控件ID, 比如: TargetControl=GridView1

4. F5运行即可

(四). 完整代码

1. 主控件FloatTraceMenu.cs代码

1///<summary>
2///Author:[ChengKing(ZhengJian)]
3///Blog:Http://blog.csdn.net/ChengKing
4///Date:2007/4/3
5///</summary>
6[DefaultProperty("TargetControl")]
7[ToolboxData("<{0}:FloatTraceMenurunat=server></{0}:FloatTraceMenu>")]
8//[Designer(typeof(System.ComponentModel.Design.DesignerCollection))]
9publicclassFloatTraceMenu:Control,IComponent
10{
11
12[Bindable(true)]
13[Category("Appearance")]
14[DefaultValue("[FloatTraceMenu\"FloatTraceMenu1\"]")]
15[Localizable(true)]
16publicstringText
17{
18get
19{
20Strings=(String)ViewState["Text"];
21return((s==null)?String.Empty:s);
22}
23
24set
25{
26ViewState["Text"]=value;
27}
28}
29
30[Bindable(true)]
31[Category("Appearance")]
32[DefaultValue("")]
33[Description("设置此控件的寄主控件")]
34[TypeConverter(typeof(ControlIDConverter))]
35publicstringTargetControl
36{
37get
38{
39Strings=(String)ViewState["TargetControl"];
40return((s==null)?String.Empty:s);
41}
42set
43{
44ViewState["TargetControl"]=value;
45}
46}
47
48protectedoverridevoidRender(HtmlTextWriterwriter)
49{
50if(DesignMode)
51{
52this.Controls.Clear();
53LiteralControllc=newLiteralControl();
54lc.Text=this.Text;
55this.Controls.Add(lc);
56}
57base.Render(writer);
58}
59
60protectedoverridevoidCreateChildControls()
61{
62base.CreateChildControls();
63}
64
65protectedoverridevoidOnPreRender(EventArgse)
66{
67
68if(!Page.ClientScript.IsClientScriptBlockRegistered("BuildMenu"))
69{
70Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"BuildMenu",
71"<scripttype='text/javascript'src='JScript.js'></script>");
72}
73
74//GridView增加FloatMenu
75ControltargetControl=this.FindControl(TargetControl);
76
77//给GridView头增加FloatMenu
78//ControltargetControl=this.FindControl(TargetControl).Controls[0].Controls[0];
79
80StringBuilderstrInitScript=newStringBuilder();
81if(targetControl!=null)
82{
83strInitScript.Append("<scripttext/javascript>");
84strInitScript.Append("writeStyle();makeMenu();varobj;");
85strInitScript.Append("if(document.all&&window.print)");
86strInitScript.Append("{");
87strInitScript.Append("varobjClientId='"+targetControl.ClientID+"';");
88strInitScript.Append("if(objClientId!=null)");
89strInitScript.Append("{");
90strInitScript.Append("obj=document.getElementById(objClientId);");
91strInitScript.Append("document.onclick=forcehideMenu;");
92//strInitScript.Append("obj.onmouseover=showMenu;");
93strInitScript.Append("obj.onmouseenter=showMenu;");
94//strInitScript.Append("obj.onmouseout=hideMenu;");
95strInitScript.Append("obj.onmouseleave=hideMenu;");
96strInitScript.Append("obj.onmousemove=moveMenu;");
97strInitScript.Append("obj.oncontextmenu=showMenu;");
98strInitScript.Append("}");
99strInitScript.Append("else{alert('PleaseSetTargetControlProperty!')}");
100strInitScript.Append("}");
101strInitScript.Append("</script>");
102}
103else
104{
105strInitScript.Append("<scripttext/javascript>");
106strInitScript.Append("alert('PleaseSetTargetControlProperty!');");
107strInitScript.Append("</script>");
108}
109if(!Page.ClientScript.IsStartupScriptRegistered("InitScript"))
110{
111Page.ClientScript.RegisterStartupScript(this.GetType(),"InitScript",
112strInitScript.ToString());
113}
114
115base.OnPreRender(e);
116}
117}

2. 测试页面文件default.aspx代码

1<div>
2<asp:GridViewID="GridView1"runat="server"</asp:GridView>
3<cc1:FloatTraceMenu ID="FloatTraceMenu1"runat="server"TargetControl= "GridView1">

</cc1:FloatTraceMenu>
4</div>

(五). 示例代码下载

http://www.cnblogs.com/Files/MVP33650/自定义控件开发--[浮动工具条].rar

[扩展]可以自定义(手动编程)浮动菜单的款项

http://www.cnblogs.com/Files/MVP33650/自定义控件开发--[浮动工具条--可手动编码自定义菜单项]V2.rar

(六). 控件开发其它相关文章:

http://blog.csdn.net/ChengKing/category/288694.aspx

分享到:
评论

相关推荐

    Asp.net 2.0 自定义控件开发[浮动工具条控件].rar

    Asp.net 2.0 自定义控件开发[浮动工具条控件].rar

    ASP.NET 2.0下图像缩略图控件源代码

    这是一个ASP.NET2.0下的图像缩略图展示控件。显示图像的缩略图,并当单击缩略图时,显示下载进度条,然后在一个浮动DIV中显示全图。

    ASP.NET常用代码和第三方控件和类生成模版

    ASP.NET常用代码和第三方控件和类生成模版 常用代码包含了jmail邮件收发,登录验证码自动生成,分页代码,浮动框架导航,权限设置,上传附件,图片上传,过滤字符串 等等。 第三方空间包含了 ajax控件,fck,jmail,...

    Telerik.Web.UI安装包01

    r.a.d.splitter - 一个创建类似桌面程序的界面控件,支持创建可调整大小的区域和滑块、类似于Visual Studio .Net的浮动面板 r.a.d.spell - 一个多语言的拼写检查控件 r.a.d.tabstrip - 一个灵活的控件,用于在ASP...

    office 电子签名控件

    控件正支持全部Office菜单,支持Office的打印预览,控件强大的B/S通讯技术, 能够将服务器数据库中的数据或者用户自定义的数据插入当前文档的指定位置,而且 还可以将文档中的指定数据随时保存到服务器数据库或者...

    NTKO文档在线编辑控件4.0.1.2

    NTKO OFFICE文档控件支持在线编辑,痕迹保留,手写签名,电子印章,全屏批注,电子签名[数字签名,数字证书签名],简单OCR等实用功能,支持PHP,ASP,JSP,C#,VB.NET,DOMINO等各种web编程语言和服务器。 NTKO OFFICE文档...

    NTKO文档在线编辑控件独立安装包4.0.6.5(适合TA2009\2010\2011版本)

    NTKO OFFICE文档控件,支持文档电子签名[数字签名],支持PHP,ASP,JSP,C#,VB.NET,DOMINO等各种web编程语言和服务器的在线编辑痕迹保留手写签名电子印章全屏批注控件。 NTKO OFFICE文档控件能够在浏览器窗口中直接...

    ASP.NET考研资讯网实验报告 含关键代码及注释、关键设置截图

    文章中主要包括本网站的主要功能以及实现各项功能的关键代码,代码中关键语句的解释;为了实现某些功能遇到的问题及解决办法;调试中遇到问题的解决办法。 关键字: 考研资讯、经验共享、历年分数线查询、 引言: ...

    阿赖实用javascript控件程序

    阿赖实用javascript控件程序当前包括表格控件、浮动层窗体控件、菜单控件和目录树控件(及目录树模板)几种。 关于"javascript控件"一词我还没见过有人这么用过,实际上它不是真正意义上的"控件",而是一个独立的 ...

    Ajax完全自学手册(源代码).rar

    12.1 使用ASP.NET Ajax控件实现的页面无刷新的简单实例 第13章 AjaxGridView Ajax化的GridView AjaxChartRoom Ajax无刷新聊天室 第14章(\C05) AutoComplete AutoCompleteExtender控件的使用 ...

    NTKO OFFICE痕迹保留文档控件.rar

    NTKO Office文档控件是OA系统开发的最佳选择组件!支持强制痕迹保留,手写签名,电子印章,支持所有菜单,任意后台服务器等。 NTKO OFFICE文档控件是拥有完全自主知识产权的ActiveX控件。使用NTKO Office文档控件,...

    一个可以保存客户端DOM状态的控件 CeellScriptManager

    比如禁用背景,浮动层位置保持,因为在页面回传之后通过脚本修改过的Dom属性会还原回去,具体请看示例 注意:使用该控件不可以再设置page的MaintainScrollPositionOnPostback=true或者 ...

    Ajax完全自学手册PPT和源代码(ptt格式)

    12.1 使用ASP.NET Ajax控件实现的页面无刷新的简单实例 第13章 AjaxGridView Ajax化的GridView AjaxChartRoom Ajax无刷新聊天室 第14章(\C05) AutoComplete AutoCompleteExtender控件的使用 Calender Reorder...

    Ajax完全自学手册(PPT)

    12.1 使用ASP.NET Ajax控件实现的页面无刷新的简单实例 第13章 AjaxGridView Ajax化的GridView AjaxChartRoom Ajax无刷新聊天室 第14章(\C05) AutoComplete AutoCompleteExtender控件的使用 ...

    c#t自定义Button

    //EventHandler是asp.net内置的委托,事件是特殊的委托。 flowForm.MouseCaptureChanged += new EventHandler(flowForm_MouseCaptureChanged); // flowForm.FormClosing += new FormClosingEventHandler(flowForm...

    C#编程经验技巧宝典

    6 &lt;br&gt;0014 如何锁定窗体中的控件 6 &lt;br&gt;0015 统一窗体中控件的字体设置 7 &lt;br&gt;0016 通过“格式”菜单布局窗体 7 &lt;br&gt;0017 起始页中的“Visual Studio开发人员新闻” 7 &lt;br&gt;1.3 MSDN帮助的...

    C#源码大集合 02(共3卷)

    │ │ ├─实例3 如何使用菜单控件 │ │ ├─实例4 如何使用工具栏控件 │ │ ├─实例5 如何使用状态栏控件 │ │ ├─实例6 如何使用托盘控件 │ │ ├─实例7 如何使用标签页控件 │ │ ├─实例8 如何使用...

Global site tag (gtag.js) - Google Analytics