用户控件和页面间的方法调用 及 用户控件间的方法调用

 

用户控件和页面间的方法调用 :

 

  1.   protected void Page_Load(object sender, EventArgs e)
  2.     {
  3. //UcA2_1用户控件
  4.         (UcA2_1.FindControl("Button1"as Button).Click += new EventHandler(Button1_Click);
  5.     }
  6.     protected void Button1_Click(object sender, EventArgs e)
  7.     {
  8.         string keyword=(UcA2_1.FindControl("TextBox1"as TextBox).Text;
  9. //绑定操作
  10.     }

用户控件间调用:

 

A控件有二个TextBox,和一个Button  
  B控件上面有一个A控件的对象,和一个TextBox  
  我现在有一个WebForm1.aspx窗体调用B控件.这样,在WebForm1界面上同时出现A和B控件上的内容.  
  问题是,我在B控件里面,怎么来触发A控件的Button事件,触发后,在B控件上的TextBox里面显示A控件两个输入框的内容
 

  1. A.ascx   
  2.   用户A控件中定义   
  3.   public   event   EventHandler   BtnEventA;   
  4.   public   TextBox   textBoxA   
  5.   定义控件中按钮事件   
  6.   private   void   BtnQuery_Click(object   sender,   System.EventArgs   e)   
  7.   {   
  8.   if   (BtnEventA   !=   null)   
  9.   {   
  10.   BtnEvent(sender,e);   
  11.   }   
  12.   }   
  13.     
  14.     
  15.   B.ascx   
  16.   用户B控件中定义   
  17.   public   event   EventHandler   BtnEventB;   
  18.   public   TextBox   textBoxB   
  19.   定义控件中按钮事件   
  20.   private   void   BtnQuery_Click(object   sender,   System.EventArgs   e)   
  21.   {   
  22.   if   (BtnEventB   !=   null)   
  23.   {   
  24.   BtnEvent(sender,e);   
  25.   }   
  26.   }   
  27.     
  28.   将你定义的用户控件A,B拖放到你的页面,更改控件名称为ACtrl   ,   BCtrl   
  29.     
  30.   在你的调用页面的cs代码中加入定义   
  31.     
  32.   protected   A   ACtrl   ;   
  33.   protected   B   BCtrl   ;   
  34.     
  35.   在初始化代码中加入   
  36.   override   protected   void   OnInit(EventArgs   e)//这段代码是自动生成的,隐藏折叠了的,你要打开添加   
  37.   {   
  38.         .....   
  39.         B.BtnEventB   +=   new   EventHnader(this.test);//这个不能少!!!   
  40.   }   
  41.     
  42.   private   void   test(object   sender   ,System.EventArgs   e)   
  43.   {   
  44.         ACtrl.textBoxA.text   =   BCtrl.textBoxB.Text;           
  45.   }   
  46.     

    

另外一个实例:


 

  1. 在asp.net 2.0中,要在不同的web控件之间互相调用,必须要<%@ Reference VirtualPath="另一控件名称“>
  2. 来引用,举例如下
  3. default.aspx:
  4. <form id="form1" runat="server">
  5. <uc1:WebUserControl id="WebUserControl1" runat="server">
  6. </uc1:WebUserControl>
  7. <uc2:WebUserControl2 ID="WebUserControl2_1" runat="server" />
  8. </form>
  9. 我们要实现的是,按下控件1的按钮后,将在控件2的文本框中显示出指定的文本
  10. 在首页里,分别调用了控件1和控件2
  11. webcontrol.ascx:
  12. <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
  13. <%@ Reference VirtualPath="~/WebUserControl2.ascx" %>
  14. <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
  15. 这里放置一个按钮,然后用reference来引用控件2
  16. webcontrol.ascx.cs:
  17. protected void Button1_Click(object sender, EventArgs e)
  18. {
  19. WebUserControl2 w = Page.FindControl("WebUserControl2_1"as WebUserControl2;
  20. w.Text = "Hello all!";
  21. }
  22. 对于控件2:
  23. <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
  24. <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  25. 控件2的codebehind代码:
  26. public partial class WebUserControl2 : System.Web.UI.UserControl
  27. {
  28. protected void Page_Load(object sender, EventArgs e)
  29. {
  30. }
  31. public string Text
  32. {
  33. set { TextBox1.Text = value; }
  34. }
  35. }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值