代码之家  ›  专栏  ›  技术社区  ›  BCS

如何使自定义ASP.NET控件基于现有控件/子类?

  •  2
  • BCS  · 技术社区  · 15 年前

    我想创建一个自定义的ASP.NET控件,它是 System.Web.UI.WebControls.Calendar . 我需要它添加一些数据成员,并在它的构造函数中设置一些事件处理程序。

    这有可能吗?如果是这样怎么办?

    到目前为止,我已经尝试使用 添加新项目 添加默认值 Web用户控件 尝试编辑 Calendar 在几个不同的地方。到目前为止还没有一个成功。


    编辑:看来我完全不知道这东西是怎么工作的。 有人知道我可以看的演示项目吗?已经存在的东西。(除非你真的是董事会成员,否则不要出去为我做一个。)

    3 回复  |  直到 15 年前
        1
  •  4
  •   womp    15 年前

    除非我误解了这个问题,否则您可以创建一个新的类文件并从日历继承。添加所需的属性和要设置的事件处理程序。

    public class MyCalendar : System.Web.UI.WebControls.Calendar
    {
       public MyCalendar()
       {
          // set up handlers/properties
       }
    }
    

    然后,无论您想在页面中添加日历的任何地方,您都可以简单地创建一个MyCalendar。如果您需要在设计器中这样做,可以查看一些关于如何使继承的控件在设计器中显示其新属性的好教程, like this one .

        2
  •  0
  •   s_hewitt    15 年前

    在新的类文件中,您需要从System.Web.UI.WebControls.Calendar继承,而不是从System.Web.UI.UserControl继承。

    namespace MyNamespace
    {
      [ToolboxData("<{0}:UserCalendar runat=\"server\" />")]
      public class UserCalendar : System.Web.UI.WebControls.Calendar
      {
         private string property1;
         public UserCalendar() { }
         public string Property1 { get { return property1;} set { property1 = value; } }
      }
    }
    

    然后在.aspx页上(或在另一个control.ascx中):

    <%@ Register TagPrefix="userControl" namespace="MyNamespace" assembly="MyProjectAssembly" %>
    
    <userControl:UserCalendar runat="server" ID="myCalendar" property1="some value" />
    
        3
  •  0
  •   John Saunders    15 年前