用户控件和页面间的方法调用 :
- protected void Page_Load(object sender, EventArgs e)
- {
- //UcA2_1用户控件
- (UcA2_1.FindControl("Button1") as Button).Click += new EventHandler(Button1_Click);
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- string keyword=(UcA2_1.FindControl("TextBox1") as TextBox).Text;
- //绑定操作
- }
用户控件间调用:
A控件有二个TextBox,和一个Button
B控件上面有一个A控件的对象,和一个TextBox
我现在有一个WebForm1.aspx窗体调用B控件.这样,在WebForm1界面上同时出现A和B控件上的内容.
问题是,我在B控件里面,怎么来触发A控件的Button事件,触发后,在B控件上的TextBox里面显示A控件两个输入框的内容
- A.ascx
- 用户A控件中定义
- public event EventHandler BtnEventA;
- public TextBox textBoxA
- 定义控件中按钮事件
- private void BtnQuery_Click(object sender, System.EventArgs e)
- {
- if (BtnEventA != null)
- {
- BtnEvent(sender,e);
- }
- }
- B.ascx
- 用户B控件中定义
- public event EventHandler BtnEventB;
- public TextBox textBoxB
- 定义控件中按钮事件
- private void BtnQuery_Click(object sender, System.EventArgs e)
- {
- if (BtnEventB != null)
- {
- BtnEvent(sender,e);
- }
- }
- 将你定义的用户控件A,B拖放到你的页面,更改控件名称为ACtrl , BCtrl
- 在你的调用页面的cs代码中加入定义
- protected A ACtrl ;
- protected B BCtrl ;
- 在初始化代码中加入
- override protected void OnInit(EventArgs e)//这段代码是自动生成的,隐藏折叠了的,你要打开添加
- {
- .....
- B.BtnEventB += new EventHnader(this.test);//这个不能少!!!
- }
- private void test(object sender ,System.EventArgs e)
- {
- ACtrl.textBoxA.text = BCtrl.textBoxB.Text;
- }
另外一个实例:
- 在asp.net 2.0中,要在不同的web控件之间互相调用,必须要<%@ Reference VirtualPath="另一控件名称“>
- 来引用,举例如下
- default.aspx:
- <form id="form1" runat="server">
- <uc1:WebUserControl id="WebUserControl1" runat="server">
- </uc1:WebUserControl>
- <uc2:WebUserControl2 ID="WebUserControl2_1" runat="server" />
- </form>
- 我们要实现的是,按下控件1的按钮后,将在控件2的文本框中显示出指定的文本
- 在首页里,分别调用了控件1和控件2
- webcontrol.ascx:
- <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
- <%@ Reference VirtualPath="~/WebUserControl2.ascx" %>
- <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
- 这里放置一个按钮,然后用reference来引用控件2
- webcontrol.ascx.cs:
- protected void Button1_Click(object sender, EventArgs e)
- {
- WebUserControl2 w = Page.FindControl("WebUserControl2_1") as WebUserControl2;
- w.Text = "Hello all!";
- }
- 对于控件2:
- <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
- <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
- 控件2的codebehind代码:
- public partial class WebUserControl2 : System.Web.UI.UserControl
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- public string Text
- {
- set { TextBox1.Text = value; }
- }
- }