Опубликован: 25.03.2010 | Уровень: для всех | Доступ: платный
Лекция 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. Ввожу код на сайте, пишет:

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

 

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

Денис Пашков
Денис Пашков
Россия
Татьяна Ковалюк
Татьяна Ковалюк
Украина, Киев, Киевский политехнический институт, 1974