0

私はC#で次のように2つのユーザーコントロール(webheader、webfooter)を持っています

   <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="webheader.ascx.cs"     Inherits="WebUserControls.webheader" %>
   <p>
    <asp:Button ID="btnAdd" runat="server" Text="Add" onclick="btnAdd_Click" />

    &nbsp;&nbsp;&nbsp;&nbsp;

    <asp:Button ID="btnEdit" runat="server" Text="Edit" />

    &nbsp;&nbsp;&nbsp;&nbsp;

    <asp:Button ID="btnDelete" runat="server" Text="Delete" />

  </p>


  <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="webFooters.ascx.cs"      Inherits="WebUserControls.webFooters" %>
  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  <br />
  <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
  <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  <br />
  <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
   <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
  <br />
  <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
  <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
  <br />
  <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>
  <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
   <p>
    &nbsp;</p>

ユーザーコントロールの webheader に 3 つのボタンがあります webfooters で 3 つの異なるメソッドを呼び出したい 各ボタンは異なるメソッドを呼び出します ページに 2 つの usercontrol を配置したので、どのように処理できますか

4

1 に答える 1

0

イベントとデリゲートを使用すると、非常に簡単に実行できます。

WebHeader からイベントを公開し、コンテンツ ページでサブスクライブします。WebHeader Click で呼び出したい WebFooter のメソッドを public にします。ボタンがクリックされると、WebFooter の適切なメソッドが呼び出されます

//pseudo code

//WebHeader
public delegate void Button1Clicked(object[] args);
//raise this event when the button is clicked
public event Button1Clicked buttonClicked;

//WebFooter
public void Method1(object[] params); //for button 1 click



//In content page which holds both header and footer control
WebHeader.Button1Clicked+= new WebHeader.Button1Clicked (HandleClick);

public void HandleClick(object[] params)
{
    WebFooter.Method2(params);
}

より明確にするために、次の例を参照してください http://www.dotnetfunda.com/articles/article201.aspx

于 2012-05-16T07:40:32.353 に答える