Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1446 / 158 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 18:

Пользовательские компоненты

Испытание созданных компонентов
  • В проекте ComponentTest настройте пользовательский интерфейс, как показано на рисунке и в таблице (в скобках приведены имена экземпляров компонентов)

Таблица 18.3 . Таблица свойств элементов интерфейса
Элемент Свойство Значение
Form1 MaximizeBox false
Size 324; 224
Text Испытание компонентов
listPlanets FormattingEnabled true
ItemHeight 16
Location 12; 12
Size 109; 164
indexPlanet Location 160; 153
Size 26; 22
textBox1 BorderStyle None
Font Microsoft Sans Serif; 12pt; style=Bold
Location 138; 21
Multiline true
ReadOnly true
Size 166; 107
Text Введите индекс планеты и щелкните на красном
TextAlign Center
firstComponent1 Location 201; 153
Size 75; 23
  • В панели Properties перейдите на вкладку Events и создайте обработчики для элементов согласно таблице
Таблица 18.4 . Таблица событий элементов интерфейса
Элемент Событие Имя обработчика
listPlanets SelectedIndexChanged listPlanets_SelectedValueChanged
indexPlanet KeyPress indexPlanet_KeyPress
firstComponent1 Click firstComponent1_Click
  • Заполните файл Form1.cs следующим кодом
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
    
namespace ComponentTest
{
    public partial class Form1 : Form
    {
        // Конструктор формы
        public Form1()
        {
        InitializeComponent();
    
        // Заполнение списка планетами
        for (int i = 0; i <= planets1.MaxIndex; i++)
        {
        listPlanets.Items.Add(String.Format(
          "{0}) {1}", i, planets1[i]));
        }
    
        listPlanets.SelectedIndex = 0;
        }
    
        // Обработчики событий
        private void firstComponent1_Click(object sender, EventArgs e)
        {
        // Контролируем пустой ввод
        if (indexPlanet.Text == String.Empty) return;
    
        int index = Convert.ToInt32(indexPlanet.Text);
    
        // Контролируем максимальный индекс ввода
        index = Math.Min(index, planets1.MaxIndex);
        if (listPlanets.SelectedIndex != index)
                listPlanets.SelectedIndex = index;
        else
          MessageBox.Show(String.Format("Вы выбрали 
		планету {0}", planets1[index]));
        }
    
        private void indexPlanet_KeyPress(object sender, 
		KeyPressEventArgs e)
        {
        // Фильтруем цифры, Backspace, Enter (Delete и стрелки по умолчанию)
        if ((e.KeyChar < Convert.ToChar(Keys.D0) ||
                e.KeyChar > Convert.ToChar(Keys.D9))
                && e.KeyChar != Convert.ToChar(Keys.Back)
                && e.KeyChar != Convert.ToChar(Keys.Enter))
                e.Handled = true;
    
        // Реакция на клавишу Enter
        if (e.KeyChar == Convert.ToChar(Keys.Enter))
                firstComponent1_Click(null, EventArgs.Empty);
        }
    
        bool loadFlag = true; // Локальное поле-флаг
        private void listPlanets_SelectedValueChanged
		(object sender, EventArgs e)
        {
        int index = listPlanets.SelectedIndex;
        indexPlanet.Text = index.ToString();
        if (loadFlag)
        {
        // При первом запуске не показывать
        loadFlag = false;
        return;
        }
        else
          MessageBox.Show(String.Format("Вы выбрали 
		планету {0}", planets1[index]));
        }
    }
}
Листинг 18.9 . Код файла Form1.cs
  • Откомпилируйте приложение текущего уровня готовности и испытайте его работу
Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

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

 

Как активировать код?