<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="_4cst._default" %>
<%@ Register TagPrefix="uc1" TagName="Banner" Src="Cotrols/Banner.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>default</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<uc1:Banner id="Banner1" runat="server"></uc1:Banner>
</form>
</body>
</HTML>

解决方案 »

  1.   

    在.cs访问用户控件是一样的呀,根据ID访问就是了.
      

  2.   

    如果我写成这样,不会出错,但无法达到预期效果:default.aspx
    <%@ Register TagPrefix="Trip" Tagname="HeadTest" Src="Head.ascx" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>MainForm</title> <! %@ Page language="c#" Codebehind="default.aspx.cs" 
    AutoEventWireup="false" Inherits="Trip.MainForm" % >
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="MainForm" method="post" runat="server">
    <FONT face="宋体">
    <TRIP:HEADTEST id="MyHead" Runat="server"></TRIP:HEADTEST>
    <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="300" border="1">
    <TR>
    <TD colSpan="3"><asp:button id="Button2" runat="server" Text="OK"></asp:button><asp:button id="Button1" runat="server" Text="Button"></asp:button>
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox></TD>
    </TR>
    <TR>
    </TR>
    </TABLE>
    </FONT>
    </form>
    </body>
    </HTML>default.aspx.csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace Trip
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class MainForm : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Button Button2;
    protected System.Web.UI.WebControls.TextBox TextBox1;
    Head MyHead;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button2.Click += new System.EventHandler(this.Button2_Click);
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    MyHead.Address = "当然在中国啦";
         
    } private void Button2_Click(object sender, System.EventArgs e)
    {
    TextBox1.Text = MyHead.Address;
    }
    }
    }Head.ascx<%@ Control Language="c#" AutoEventWireup="false" Codebehind="Head.ascx.cs" Inherits="Trip.Head" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
    <FONT face="宋体"></FONT>
    <asp:textbox id="edtName" runat="server"></asp:textbox>
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>Head.ascx.csnamespace Trip
    {
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls; /// <summary>
    /// WebUserControl1 的摘要说明。
    /// </summary>
    public class Head : System.Web.UI.UserControl
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.TextBox edtName; public string Address
    {
    get 
    {
    return edtName.Text;
    }
    set 
    {
    edtName.Text = value;
    } }
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    edtName.Text = "abcdefg";
    }
    }
    }在default.aspx.cs中无法对MyHead进行赋值和取值。
      

  3.   

    虚心请教gshope(北京.Net):我一直不知道自定义控件和用户控件的区别,不是开玩笑的,我一直以为是差不多的.
      

  4.   

    用户控件                                      自定义控件
    容易创建                                      创建较难
    运行时编译                                    预编译
    每个应用程序需要空间的一个单独副本         仅在全局程序集缓存中需要控件的单个副本
    可以直接写入html代码                       html代码需要申明
    不能添加到工具箱                           可以添加到工具箱
    适用于静态布局                             适用于动态布局
    部分可视化支持                             完整的可视化支持
      

  5.   

    如我上面的代码,如果将button的click事件放在.aspx文件中,则可以控制.ascx用户控件:如将default.aspx改成:
    <%@ Register TagPrefix="Trip" Tagname="HeadTest" Src="Head.ascx" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <script language="C#" runat="server">
      void SetMyHead(Object sender, EventArgs E)
      {
        TextBox1.Text = MyHead.Address;
        MyHead.Address = "kkk";
      }
    </script>
    <HEAD>
    <title>MainForm</title> <! %@ Page language="c#" Codebehind="default.aspx.cs" 
    AutoEventWireup="false" Inherits="Trip.MainForm" % >
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="MainForm" method="post" runat="server">
    <FONT face="宋体">
    <TRIP:HEADTEST id="MyHead" Runat="server"></TRIP:HEADTEST>
    <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="300" border="1">
    <TR>
    <TD colSpan="3"><asp:button id="Button2" runat="server" Text="OK"></asp:button>
    <asp:button id="Button1" OnClick="SetMyHead" runat="server" Text="Button"></asp:button>
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox></TD>
    </TR>
    <TR>
    </TR>
    </TABLE>
    </FONT>
    </form>
    </body>
    </HTML>这样写,可以控制Head。而如果在.cs中,如何实现?光声明Head后调用是不行的啊。