博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
阅读量:4190 次
发布时间:2019-05-26

本文共 3618 字,大约阅读时间需要 12 分钟。

(一). 概述

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

        2. 仅当控件支持oncontextmenu事件. 另外, 与其功能类似的控件[浮动Toobar自定义控件]

(二). 运行如图

  

(三). 用法

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

   2. 从工具箱拖动一个PopupTraceMenu控件和另一个支持oncontextmenu事件的控件到设计器中,

       比如:

   3. 设置PopupTraceMenur的属性TargetControl=GridView1

   4. F5运行即可

(四). 完整代码

    1. 主控件PopupTraceMenu.cs代码

  1 
 
///
 
  2     /// Author: ChengKing(ZhengJian)
  3     /// 
  4 
    [DefaultProperty(
"
TargetControl
"
)]
  5 
    [ToolboxData(
"
<{0}:PopupTraceMenu runat=server>
"
)]
  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 
                    
"
<script type='text/javascript' src='JScript.js'></script>
"
);
 70 
            }
 71 
 72 
            Control targetControl 
=
 
this
.FindControl(TargetControl);
 73 
 74 
            StringBuilder strInitScript 
=
 
new
 StringBuilder();
 75 
            
if
 (targetControl 
!=
 
null
)
 76 
            {                
 77 
                strInitScript.Append(
"
<script text/javascript> 
"
);
 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(
"
</script>
"
);
 91 
            }
 92 
            
else
 93 
            {
 94 
                strInitScript.Append(
"
<script text/javascript> 
"
);
 95 
                strInitScript.Append(
"
   alert('Please Set TargetControl Property!'); 
"
);
 96 
                strInitScript.Append(
"
</script>
"
);
 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>

(五). 示例代码下载

       

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

       

 

 

 

 

 

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1547692

你可能感兴趣的文章
openstack官方docker介绍
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
查看>>
pentaho套件
查看>>
软件产品经理职责
查看>>
Linux下Tomcat的安装配置
查看>>
UI即User Interface
查看>>
大数据要学习知识
查看>>
Elasticsearch Java API总汇
查看>>
SearchRequestBuilder常用方法说明
查看>>
为什么有的程序员的代码结构混乱
查看>>
查看数据库
查看>>
SQLite 数据库
查看>>
行业应用
查看>>
工作的常识
查看>>
java里面获取map的key和value的方法
查看>>
积累20180203
查看>>