2010-10-22 5 views
-1

В моем последнем post Я спросил обратную связь с моим кодом. Сегодня я также собрал простой проект-макет. Если вы думаете, что теперь у меня есть базовые знания делегатов и событий, то, пожалуйста, скажите мне трудную задачу для делегатов и событий. Ниже мой кодекс-Делегаты и события

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DelegatesAndEvents.aspx.cs" Inherits="WebProjects.DelegatesAndEvents" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Button ID="btn1" runat="server" onclick="btn1_Click" Text="ONE" /><br /> 
     <asp:Button ID="btn2" runat="server" onclick="btn2_Click" Text="TWO" /><br /> 
     <asp:Button ID="btn3" runat="server" onclick="btn3_Click" Text="THREE" /><br /> 

     <asp:Label ID="lblText" runat="server"></asp:Label> 
    </div> 
    </form> 
</body> 
</html> 


using System; 

namespace WebProjects 
{ 
    public partial class DelegatesAndEvents : System.Web.UI.Page 
    { 
     public delegate void MyDelegate(string val); 

     public event MyDelegate myEvent; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      myEvent += SetLabelValue; 
     } 

     public void SetLabelValue(string val) 
     { 
      lblText.Text = val; 
     } 

     protected void btn1_Click(object sender, EventArgs e) 
     { 
      if(myEvent!=null) 
      { 
       string value = "button one is clicked."; 
       myEvent(value); 
      } 
     } 

     protected void btn2_Click(object sender, EventArgs e) 
     { 
      if (myEvent != null) 
      { 
       string value = "button two is clicked."; 
       myEvent(value); 
      } 
     } 

     protected void btn3_Click(object sender, EventArgs e) 
     { 
      if (myEvent != null) 
      { 
       string value = "button three is clicked."; 
       myEvent(value); 
      } 
     } 
    } 
} 

Заранее спасибо.

+1

Сложная задача? Используйте их хорошо в реальном проекте ;-) (и увеличивайте свой коэффициент приема) – zgorawski

ответ

2

Мой первый совет - не писать эти программы самостоятельного изучения в рамках проекта asp.net, потому что сначала вы должны понимать жизненный цикл страниц asp.net. Консольное приложение легче писать и тестировать.

И в ваш вопрос код кажется правильным. Будет лучше, если вы дадите значительные имена переменным, что также поможет лучше понять делегатов и событий.

Ваш код является совершенным, интегрируя события 3 щелчка в один. Фактически в коде myEvent используется как обычный делегат, не обязательно быть event. This answer может помочь понять различия между делегатом/событием лучше.

Смежные вопросы