사용자 정의 컨트롤에 이벤트를 추가하고 해당 이벤트를 코드 뒤에 캡처합니다. 다음 예는 다음과 같습니다
Default.aspx를 웹 형태 :
은 사용자 컨트롤 등록 : 위의 컨트롤의
<%@ Register TagPrefix="so" TagName="UserControl" Src="~/WebUserControl.ascx" %>
4 인스턴스. 우리는 아래에 정의 된 OnRemoving 이벤트를 처리하고 주 :
<so:UserControl ID="UserControl1" runat="server" Title="Control 1" OnRemoving="UserControl1_Removing" />
<so:UserControl ID="UserControl2" runat="server" Title="Control 2" OnRemoving="UserControl2_Removing" />
<so:UserControl ID="UserControl3" runat="server" Title="Control 3" OnRemoving="UserControl3_Removing" />
<so:UserControl ID="UserControl4" runat="server" Title="Control 4" OnRemoving="UserControl4_Removing" />
기본입니다.영문 코드 뒤에 :
웹 사용자 컨트롤이 "제거"를 포함 :
protected void UserControl1_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
protected void UserControl2_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
protected void UserControl3_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
protected void UserControl4_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
사용자 제어 웹 형태 : 뒤에 코드에서
, 나는 컨트롤의 OnRemoving의 각 이벤트를 처리 버튼 :
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<fieldset>
<legend><%=Title %></legend>
<asp:Button ID="Button_Remove" runat="server" Text="Remove" OnClick="Button_Remove_Click" />
</fieldset>
사용자 컨트롤 코드 뒤에 :
마지막으로, 여기에 사용자 컨트롤에 대한 이벤트를 코딩하는 방법은 다음과 같습니다
public partial class WebUserControl : System.Web.UI.UserControl
{
// the event delegates may listen for
public event EventHandler Removing;
public string Title { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button_Remove_Click(object sender, EventArgs e)
{
// raise the event for attached delegates
if (Removing != null)
Removing(this, EventArgs.Empty);
}
}
최종 결과 :
위의 예는 다음 웹 페이지를 생성합니다. 제거 버튼을 클릭하면, 해당 컨트롤이 사라집니다 :
행운을 빕니다!
코드 비헤이비어에서이 작업을 수행하고 있으며 aspx 페이지에서 동일한 사용자 컨트롤이 4 개 이상 있습니다. – asd
내 대답을 업데이트했습니다. – hunter
Id는 Button ID를 반환하지만 usercontrol 인스턴스의 ID를 가져와야합니다. (어떤 사용자 컨트롤 인스턴스의 단추가 기본 페이지에서 클릭되었는지 알고 있어야합니다.) – asd