חשיפה של אירועים מתוך UserControl לרישום מתוך הדפים
בתפוז נשאלה שאלה: איך ניתן לחשוף אירועים של פקדים שנמצאים בתוך UserControl כדי שיוכלו להירשם אליהם מתוך הדפים.
אפשר לחשוב האם זה נכון לעשות את זה או לא, אבל במידה ומגיעים למסקנה שצריך לעשות את זה - עושים את זה בצורה הבאה:
נניח שיש לנו UserControl שיש לו לחצן ואנחנו רוצים לחשוף את אירוע OnClick שלו כדי שיוכלו להירשם אליו.
ה - UserControl יראה כך:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs"
Inherits="WebApplication32.WebUserControl1" %>
<asp:Button ID="Button1" runat="server" Text="Button" />
צורה אחת היא להגדיר את הלחצן כ - Public ואז יהיה ניתן להירשם לאירועים שלו מקוד - אני חושב שהדרך הזאת אינה נכונה כי גם אם מגיעים למסקנה שרוצים לחשוף אירוע - לא מומלץ לחשוף את כל האובייקט, תמיד כדאי לחשוף רק מה שצריך, ולכן נכתוב את הקוד הבא (ב - UserControl)
public event EventHandler ButtonOnClick
{
add
{
Button1.Click += value;
}
remove
{
Button1.Click -= value;
}
}
הקוד הזה הינו למעשה חשיפה של האירוע (כמו משתנה ומאפיין).
כעת בדף שבו גוררים את ה - UserControl אפשר לכתוב את הקוד הבא:
<div>
<uc1:WebUserControl1 ID="WebUserControl11" runat="server"
OnButtonOnClick="ButtonOnClick_Click" />
</div>
כשלמעשה המאפיין OnButtonOnClick הוא האירוע החדש שיצרנו עבור ה - UserControl