如何在现有的基础上创建自定义ASP.NET控件/子类?

时间:2009-07-20 21:26:20

标签: asp.net

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

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

到目前为止,我已尝试使用添加新项目添加默认的网络用户控件,并尝试在Calendar的几个不同位置进行编辑。到目前为止没有人工作过。


编辑:似乎我完全不知道这些东西应该如何工作。 有谁知道我可以看一个演示项目?已经存在的东西。 (除非你是真的登上,不要出去为我做一个。)

3 个答案:

答案 0 :(得分:4)

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

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

然后,只要您想在页面中添加日历,就可以创建一个MyCalendar。如果您需要在设计器中执行此操作,您可以查看几个有关如何使继承的控件在设计器like this one中显示其新属性的好教程。

答案 1 :(得分:0)

在新的类文件中,您需要从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页面上(或在另一个控件.ascx中):

<%@ Register TagPrefix="userControl" namespace="MyNamespace" assembly="MyProjectAssembly" %>

<userControl:UserCalendar runat="server" ID="myCalendar" property1="some value" />

答案 2 :(得分:0)