Вывод текста в клиентскую область формы
Файлы к лабораторной работе Вы можете скачать
здесь.
Даже при простом выводе текста на экран часто нужно обеспечить взаимодействие с пользователем. В данной работе мы рассмотрим вопросы вывода текста в колонках и добавление полос прокрутки. По ходу дела затроним другие полезные возможности библиотеки .NET Framework.
Создание заготовки приложения для выполнения упражнений C#
Прежде всего мы создадим главную форму, позволяющую управлять вызовом дочерних форм для каждого упражнения.
-
Перейдите
в каталог для размещения работы и создайте новое решение
с именем Petzold4
Оболочка создаст новый подкаталог Petzold4 в выбранном каталоге размещения работы.
-
Щелкните
правой кнопкой мыши на узле решения в панели Solution
Explorer и добавьте к решению новый пустой проект с именем Test
-
В панели
Solution Explorer щелкните правой кнопкой мыши на узле References (ссылки)
проекта и выполните команду Add Reference контекстного
меню -
Добавьте
ссылки на нужные нам библиотеки DLL как показано на снимке
Мастер оболочки создаст заготовку, которую мы и будем использовать для испытания примеров, рассматриваемых далее.
using System;
namespace Test
{
///
/// Summary description for Start.
///
public class Start
{
public Start()
{
//
// TODO: Add constructor logic here
//
}
}
}
Листинг
15.1.
Начальная заготовка, созданная мастером
-
Добавьте
в начало файла Start.cs нужные пространства
имен, соответствующие добавленным ссылкам на библиотеки DLL. Сделайте
наш класс наследником библиотечного класса Form.
Удалите сгенерированные оболочкой комментарии и должен получиться
такой код
using System;
using System.Windows.Forms;
using System.Drawing;
namespace Test
{
public class Start : Form
{
public Start()
{
// В этом конструкторе будем размещать
// настройки формы
}
}
}
Листинг
15.2.
Начальный код главной формы (файл Start.cs)
Отметьте, что как только мы добавили к нашему классу базовый класс Form, в панели Solution Explorer пиктограмма класса заменилась на значек формы.
-
Добавьте
к проекту новый пустой файл с именем AppClass.cs, в котором
мы разместим точку входа приложения
-
Удалите
из кода файла AppClass.cs лишние комментарии
и конструктор. Окончательно
содержащий точку входа класс должен
иметь такой код
namespace Test
{
public class AppClass
{
// Точка входа приложения
static void Main()
{
System.Windows.Forms.Application.Run(new Start());
}
}
}
Листинг
15.3.
Класс AppClass с точкой входа
Здесь мы из точки входа, расположенной в классе AppClass, создаем экземпляр главной формы вызовом конструктора класса Start.
-
Выполните
команду меню оболочки Project/Test Properties и
в поле Output Type вкладки Common
Properties/General установите значение Windows
Application,
чтобы отключить окно командной строки приложения
В этом же окне свойств проекта установите параметр Startup Object в значение Test.AppClass
-
Задайте
значение строки заголовка главной формы, разместив в конструкторе
класса Start следующий код
using System;
using System.Windows.Forms;
using System.Drawing;
namespace Test
{
public class Start : Form
{
public Start()
{
// В этом конструкторе будем размещать
// настройки формы
this.Text = "Главная форма Лекция №15";
}
}
}
Листинг
15.4.
Задание значения строки заголовка формы Start
-
Постройте
проект и убедитесь, что пустая форма создается
Теперь мы поместим на главную форму элемент управления ListBox и заполним в нем строки заголовков упражнений, которые нам предстоит выполнить в этой лабораторной работе. Затем мы создадим обработчики событий выбора любого из упражнений, внутри которых будем запускать дочерние формы, соответствующие каждому отдельному упражнению. Упражнения будут демонстрировать возможности классов библиотеки .NET Framework и языка C#.
-
Откройте
форму Start.cs в режиме View Designer и
поместите на ней из панели Toolbox элемент управления ListBox.
Выделите элемент управления ListBox и через панель Properties задайте значения его свойств в
соответствии с таблицей
-
Растяните
форму Start.cs так, чтобы все строки списка
были полностью в ней видны
-
Запустите
приложение.
Мы не увидели тех изменений, которые внесли в форму и ожидали увидеть. Как и прежде, она оказалось пустой. Исправим это.
-
Щелкните
на форме правой кнопкой мыши и выполните команду View Code
Мы видим, что оболочка сгенерировала соответствующий код, когда мы создавали пользовательский интерфейс. Весь сгенерированный код разместился в функции InitializeComponent(), но вызова этой функции в коде нет.
public Start()
{
// В этом конструкторе будем размещать
// настройки формы
this.Text = "Главная форма Лекция №15";
InitializeComponent();
}
Листинг
15.5.
Добавление в конструктор класса Start вызова функции инициализации
-
Постройте
приложение - должен получиться такой результат
Теперь нам нужно создать обработчик, который бы при выборе любой строки списка запускал соответствующую форму.
-
Перейдите
в режим View Designer формы Start и
выделите компонент listBox. Установите в
панели Properties режим Events и
для события SelectedIndexChanged двойным щелчком на его поле
значений создайте обработчик, который заполните так
private void listBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
switch(listBox.SelectedIndex + 1)
{
case 1:
SysInfoFirstTry frm1 = new SysInfoFirstTry();
frm1.Show();
break;
case 2:
SysInfoColumn frm2 = new SysInfoColumn();
frm2.Show();
break;
case 3:
SysInfoList frm3 = new SysInfoList();
frm3.Show();
break;
case 4:
SysInfoPanel frm4 = new SysInfoPanel();
frm4.Show();
break;
case 5:
SysInfoScroll frm5 = new SysInfoScroll();
frm5.Show();
break;
case 6:
SysInfoUpdate frm6 = new SysInfoUpdate();
frm6.Show();
break;
case 7:
SysInfoEfficient frm7 = new SysInfoEfficient();
frm7.Show();
break;
}
}
Листинг
15.6.
Обработчик выбора элементов списка










