zoukankan      html  css  js  c++  java
  • asp.net开发复合控件

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;

    namespace CustomControls
    {
     /// <summary>
     /// WebCustomControl1 的摘要说明。
     /// </summary>
     [DefaultProperty("Text"),
      ToolboxData("<{0}:Composite runat=server></{0}:Composite>")]
     public class Composite : Control, INamingContainer
     //标识在 Page 对象的控件层次结构内创建新 ID 命名空间的容器控件。这仅是一个标记接口。
     {
      private int number = 100;
      private Label label;
               
      public int Number
      {
       get
       {
        return number;
       }
       set
       {
        number = value;
       }
      }
               
      private int Sum
      {
       get
       {
        EnsureChildControls();
        return Int32.Parse(((TextBox)Controls[1]).Text) +
         Int32.Parse(((TextBox)Controls[4]).Text);
       }
                     
      }

      public string Text
      {
       get
       {
        EnsureChildControls();
        return label.Text;
       }
       set
       {
        EnsureChildControls();
        label.Text = value;
       }
      }
               
               
      public event CheckEventHandler Check;
               
      protected virtual void OnCheck(CheckEventArgs ce)
      {
       if (Check != null)
       {
        Check(this,ce);
       }
      }
               
      protected override void CreateChildControls()
      {
                     
       Controls.Add(new LiteralControl("<h3>第一个数字 : "));
                     
       TextBox box1 = new TextBox();
       box1.Text = "0";
       Controls.Add(box1);
                     
       Controls.Add(new LiteralControl("</h3>"));
                     
       Controls.Add(new LiteralControl("<h3>第二个数字 : "));
                     
       TextBox box2 = new TextBox();
       box2.Text = "0";
       Controls.Add(box2);
                     
       Controls.Add(new LiteralControl("</h3>"));
                     
       Button button1 = new Button();
       button1.Text = "提交";
       Controls.Add(new LiteralControl("<br>"));
       Controls.Add(button1);
       button1.Click += new EventHandler(this.ButtonClicked);
                     
       Controls.Add(new LiteralControl("<br><br>"));
       label = new Label();
       label.Height = 50;
       label.Width = 500;
       label.Text = "点击提交按钮看是否匹配";
       Controls.Add(label);
                     
      }
               
      protected override void OnPreRender(EventArgs e)
      {
       ((TextBox)Controls[1]).Text = "0";
       ((TextBox)Controls[4]).Text = "0";
      }
               
      private void ButtonClicked(Object sender, EventArgs e)
      {
       OnCheck(new CheckEventArgs(Sum - Number));
      }
     }
     public class CheckEventArgs : EventArgs
     {
      private bool match = false;
               
      public CheckEventArgs (int difference)
      {
       if (difference == 0)
       {
        match = true;
       }
      }
      public bool Match
      {
       get
       {
        return match;
       }
      }
     }
         
     public delegate void CheckEventHandler(object sender, CheckEventArgs ce);

    }




    --------------------------------------------------------------------------------------------------------------------------------------

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;

    namespace CompositeEvent
    {
     /// <summary>
     /// WebCustomControl1 的摘要说明。
     /// </summary>
     [DefaultProperty("Text"),
      ToolboxData("<{0}:EventBubbler runat=server></{0}:EventBubbler>")]
     public class EventBubbler : Control, INamingContainer
     {
      private int number = 100;
      private Label label;
      private TextBox box1;
      private TextBox box2;
         
      public event EventHandler Click;
      public event EventHandler Reset;
      public event EventHandler Submit;
         
      public string Label
      {
       get
       {
        EnsureChildControls();
        return label.Text;
       }
       set
       {
        EnsureChildControls();
        label.Text = value;
       }
      }
         
      public int Number
      {
       get
       {
        return number;
       }
       set
       {
        number = value;
       }
      }
         
      public string Text1
      {
       get
       {
        EnsureChildControls();
        return box1.Text;
       }
       set
       {
        EnsureChildControls();
        box1.Text = value;
       }
      }
         
      public string Text2
      {
       get
       {
        EnsureChildControls();
        return box2.Text;
       }
       set
       {
        EnsureChildControls();
        box2.Text = value;
       }
      }
         
         
      protected override void CreateChildControls()
      {
            
       Controls.Add(new LiteralControl("<h3>第一个数字 : "));
            
       box1 = new TextBox();
       box1.Text = "0";
       Controls.Add(box1);
            
       Controls.Add(new LiteralControl("</h3>"));
            
       Controls.Add(new LiteralControl("<h3>第二个数字: "));
            
       box2 = new TextBox();
       box2.Text = "0";
       Controls.Add(box2);
            
       Controls.Add(new LiteralControl("</h3>"));
            
       Button button1 = new Button();
       button1.Text = "点击";
       button1.CommandName = "Click";
       Controls.Add(button1);
            
       Button button2 = new Button();
       button2.Text = "重置";
       button2.CommandName = "Reset";
       Controls.Add(button2);
            
       Button button3 = new Button();
       button3.Text = "提交";
       button3.CommandName = "Submit";
       Controls.Add(button3);
            
       Controls.Add(new LiteralControl("<br><br>"));
       label = new Label();
       label.Height = 50;
       label.Width = 500;
       label.Text = "单击一个按钮";
       Controls.Add(label);
            
      }
         
      protected override bool OnBubbleEvent(object source, EventArgs e) //事件冒泡
      {  
       bool handled = false;
       if (e is CommandEventArgs)
       {
        CommandEventArgs ce = (CommandEventArgs)e;
        if (ce.CommandName == "Click")
        {
         OnClick(ce);
         handled = true;  
        } 
        else if (ce.CommandName == "Reset")
        {
         OnReset(ce);
         handled = true;  
        }
        else if (ce.CommandName == "Submit")
        {
         OnSubmit(ce);
         handled = true;  
        }
               
       }
       return handled;           
      }
         
      protected virtual void OnClick (EventArgs e)
      {
       if (Click != null)
       {
        Click(this,e);
       }
      }
         
      protected virtual void OnReset (EventArgs e)
      {
       if (Reset != null)
       {
        Reset(this,e);
       }
      }
         
      protected virtual void OnSubmit (EventArgs e)
      {
       if (Submit != null)
       {
        Submit(this,e);
       }
      } 
     }

    }

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------


    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;
    using System.Xml;
    using System.Collections;
    namespace CompositeInput
    {
     /// <summary>
     /// WebCustomControl1 的摘要说明。
     /// </summary>
     [DefaultProperty("Text"),
      ToolboxData("<{0}:ComInput runat=server></{0}:ComInput>")]
     public class ComInput : Control, INamingContainer
      //标识在 Page 对象的控件层次结构内创建新 ID 命名空间的容器控件。这仅是一个标记接口。
     {
      private string strFileName = "bad_words.xml";
      private Label label;
               
      public string FileName
      {
       get
       {
        return strFileName;
       }
       set
       {
        strFileName = value;
       }
      }
               
      //以用户提交的文本内容为输入参数。如果用户提交的内容包含攻击性言辞,
      //则返回修改后的版本,
      //否则,直接返回原始的文本。
      public string CheckString(string InputString)
      {
       ArrayList alWordList = new ArrayList();
       string  xmlDocPath  = this.Page.Server.MapPath("bad_words.xml");
       XmlTextReader  xmlReader = new XmlTextReader(xmlDocPath);
       string asterisks  = "*************************";
       // 将定义攻击性言辞的xml文件内容读入到一个ArrayList
       while (xmlReader.Read())
       {
        if(xmlReader.NodeType==XmlNodeType.Text)
         alWordList.Add(xmlReader.Value);
       }
       xmlReader.Close();

       //检查用户提交的文本内容,将攻击性言辞替换为适当数量的星号
       foreach(string element in alWordList)
        InputString=InputString.Replace(element,asterisks.Substring(1, (element.Length)));
       return InputString ;
      }

      public string Text
      {
       get
       {
        EnsureChildControls();
        return label.Text;
       }
       set
       {
        EnsureChildControls();
        label.Text = value;
       }
      }
               
               
      public event CheckEventHandler Check;
               
      protected virtual void OnCheck(CheckEventArgs ce)
      {
       if (Check != null)
       {
        Check(this,ce);
       }
      }
               
      protected override void CreateChildControls()
      {
       Controls.Add(new LiteralControl("<h3>请在下面输入文字内容: "));

       TextBox box1 = new TextBox();
       box1.Text = "";
       Controls.Add(box1);
                     
       Controls.Add(new LiteralControl("</h3>"));
                     
       Button button1 = new Button();
       button1.Text = "提交";
       Controls.Add(new LiteralControl("<br>"));
       Controls.Add(button1);
       button1.Click += new EventHandler(this.ButtonClicked);
                     
       Controls.Add(new LiteralControl("<br><br>"));
       label = new Label();
       label.Height = 50;
       label.Width = 500;
       label.Text = "";
       Controls.Add(label);
                     
      }
               
      protected override void OnPreRender(EventArgs e)
      {
       ((TextBox)Controls[1]).Text = "";

      }
               
      private void ButtonClicked(Object sender, EventArgs e)
      {
       OnCheck(new CheckEventArgs(((TextBox)Controls[1]).Text,CheckString(((TextBox)Controls[1]).Text)));
      }
     }
     public class CheckEventArgs : EventArgs
     {
      private bool match = false;
               
      public CheckEventArgs (string str1,string str2)
      {
       if (str1 == str2)
       {
        match = true;
       }
      }
      public bool Match
      {
       get
       {
        return match;
       }
      }
     }
         
     public delegate void CheckEventHandler(object sender, CheckEventArgs ce);
    }

  • 相关阅读:
    卷积神经网络
    TensorFlow线性回归
    TensorFlow常用操作
    TensorFlow基本计算单元——变量
    Pandas基础
    Numpy基础
    Python基础
    Windows下安装TensorFlow教程
    mongodb并列查询,模糊查询
    C#对Mongodb数组对象操作
  • 原文地址:https://www.cnblogs.com/zhuawang/p/793608.html
Copyright © 2011-2022 走看看