Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Чтобы зарегистрировать специальное событие, надо добавить в элемент управления код, аналогичный представленному ниже:

public event EventHandler Voted;

protected void OnVoted(EventArgs e) {

 Voted(this, e);

}

Тогда, как только нам понадобиться инициировать событие, мы просто вызываем метод

OnVoted
, передавая аргументы события.

Когда вызывается

OnVoted
, инициируется событие, в соответствии с которым может действовать пользователь. Чтобы сделать это, пользователю необходимо зарегистрировать обработчик событий для этого события:

strawPoll1.Voted += new EventHandler(this.StrawPoll1_OnVoted);

Пользователь должен также предоставить код обработчика

strawPoll1_OnVoted
. Мы слегка расширим этот метод, добавляя специальные аргументы для события, чтобы сделать доступным элемент управления Option, который инициирует событие. Назовем наш объект специального аргумента
OptionEventArgs
и определим его в
StrawPoll.cs
следующим образом:

public class OptionEventArgs : EventArgs {

 public Option originatingOption;

}

Добавляем дополнительное открытое поле в существующий класс

EventArgs
. Так как мы изменили используемые аргументы, нам потребуется также специализированная версия представителя
EventHandler
, которая может объявляться в пространстве имен
PCSCustomWebControls
следующим образом:

public delegate void Option EventHandler(object sender, OptionEventArgs e);

Можно использовать эти примеры в

StrawPoll
следующим образом:

public class StrawPoll : System.Web.UI.WebControls.WebControl, INamingContainer {

 private string title = "Straw Poll";

 private pollStyle currentPollStyle = pollStyle.voteandvalues;

 public event OptionEventHandler Voted;

 protected void OnVoted(OptionEventArgs e) {

Voted(this, e);

 }

Также мы имеем метод для инициирования события, вызываемый из элементов управления потомков

Option
при нажатии кнопки голосования:

 public void ChildVote(OptionEventArgs e) {

OnVoted(e);

 }

Наконец, нужно сделать дальнейшую модификацию обработчика события кнопки голосования в

Option
, чтобы вызывать этот метод, задавая для него правильные параметры:

protected void btnVote_Click(object sender, System.EventArgs e) {

 Increment;

 StrawPoll parent = (StrawPoll)Parent;

 if (parent.PollStyle == pollStyle.voteonly) {

parent.PollStyle = pollStyle.valuesonly;

 }

 OptionEventArgs eOption = new OptionEventArgs;

 eOption.originatingOption = this;

 parent.ChildVote(eOption);

}

Теперь можно реализовать обработчик событий на странице с помощью элемента управления. Мы должны просто определить его на странице ASP.NET, добавляя метку для использования в обработчике.

<form id=Form1 method= post runat="server">

 <PCS:StrawPoll id=strawPoll1

title="Who is your favorite James Bond?"

Runat="server" OnVoted="strawPoll1_OnVoted" PollStyle="voteonly">

<PCS:Option Name="Sean Connery" Votes="101" />

<PCS:Option Name="Roger Moore" Votes="83" />

<PCS:Option Name="George Lazenby" Votes="32" />

<PCS:Option Name="Timothy Dalton" Votes="28" />

<PCS:Option Name="Pierce Brosnan" Votes="95" />

 </PCS:StrawPoll>

 <br> <br>

 <asp:Label Runat= "server" ID="resultLabel" Text="No vote cast." />

</form>

вместе со связанным объявлением в скрытом коде формы, если он не добавляется автоматически:

public class WebForm1 : System.Web.UI. Page {

 protected StrawPoll strawPoll1;

  • Читать дальше
  • 1
  • ...
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: