поэтому может понадобиться добавить следующее объявление в WebForm1.aspx.cs:

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

 protected PCSUserC1 myUserControl;

 ...

Это все, что нужно сделать для тестирования элемента управления пользователя, и выполнение проекта приведет к следующему результату:

 club

Этот элемент управления группирует вместе два существующих элемента управления, изображение и метку в табличной компоновке. Поэтому он попадает в категорию композитных элементов управления. 

Чтобы получить управление над выводимой мастью, можно использовать атрибут элемента <PCS: UserC1>. Атрибуты элементов для элементов управления пользователя автоматически отображаются в свойства элементов управления пользователя, поэтому для того, чтобы это заработало, необходимо только добавить свойство в код элемента управления PCSUserC1.ascx.cs. Назовем это свойство Suit и позволим ему принимать значение любой масти. Чтобы упростить представление состояния элемента управления, определим внутри пространства имен PCSUserCWebAppl перечисление для хранения четырех названий мастей:

namespace PCSUserCWebAppl {

 ...

 public enum suit {

  club, diamond, heart, spade

 }

 ...

}

Для класса PCSUserC1 требуется переменная-член для хранения типа данных suit (масть) — currentSuit:

public class PCSUserC1 : System.Web.UI.UserControl {

 protected System.Web.UI.WebControls.Image suitPic;

 protected System.Web.UI.WebControls.Label suitLabel;

 protected suit currentSuit;

А также свойство для доступа к этой переменной-члену, Suit:

public suit Suit {

 get {

  return currentSuit;

 }

 set {

  currentSuit = value;

  suitPic.ImageUrl = currentSuit.ToString() + '.bmp';

  suitLabel.Text = currentSuit.ToString();

 }

}

Здесь метод доступа set() задает URL изображения как один из файлов, скопированных ранее, а текст выводит название масти.

Теперь элемент управления закончен, и нам надо добавить код в WebForm1.aspx для доступа к этому новому свойству. Используем список переключателей для выбора масти:

<BODY MS_POSITIONING='GridLayout'>

 <form method='post' runat='server'>

  <PCS:UserC1 Runat='server' id='myUserControl' />

  <asp:RadioButtonList Runat='server' ID='suitList' autopostback='True'>

   <asp:ListItem Value='club' Selected='True'>Club</asp:ListItem>

   <asp:ListItem Value='diamond'>Diamond</asp:ListItem>

   <asp:ListItem Value='heart'>Heart</asp:ListItem>

   <asp:ListItem Value='spade'>Spade</asp:ListItem>

  </asp:RadioButtonList>

 </form>

</BODY>

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

Отметим, что нужно задать свойство autopostback этого списка как true, так как обработчик события suitList_SelectedIndexChanged() не будет выполняться на сервере, если обратная отправка не задана, и этот элемент управления не включает обратную отправку по умолчанию.

Для метода suitList_SelectedIndexChanged() требуется следующий код в WebForm1.aspx.cs:

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

 MyUserControl.Suit = (suit)Enum.Parse(typeof(suit), suitList.SelectedItem.Value);

}

Мы знаем, что атрибуты value элементов <ListItem> представляют допустимые значения перечисления suit, которое было определено ранее, поэтому мы анализируем их просто как типы перечислений (у нас здесь то же пространство имен, поэтому нам не нужно переопределять тип) и используем их как значения свойства Suit элемента управления пользователя. Мы преобразуем возвращаемый тип object в suit с помощью простого синтаксиса преобразования типов, и это невозможно сделать неявно.

Не нужно это усложнять, просто определим одно значение с помощью атрибута Suit формы Web, например:

<PCS:UserC1 Runat='server' id='myUserControl' Suit='diamond' />

Процессор ASP.NET достаточно разумен, чтобы получить правильный элемент перечисления из предоставленной строки:

Теперь можно изменять масть при выполнении этого приложения Web:

Затем мы зададим для элемента управления несколько методов. Это снова сделать несложно, нам нужно только добавить методы в класс PCSUserC1:

public void Club() {

 Suit = suit.club;

}

public void Diamond() {

 Suit = suit.diamond;

}

public void Heart() {

 Suit = suit.heart;

}

public void Spade() {

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату