Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]

本文介绍了一种自定义的右键菜单控件PopupTraceMenu的实现方法,该控件可在用户右击指定控件时显示。文章详细阐述了控件的工作原理、使用步骤及代码实现,并提供了示例代码下载。

(一). 概述

        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                       " " );
 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.youkuaiyun.com/ChengKing/category/288694.aspx

 

 

 

 

 

 




MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值