Вывод текста в клиентскую область формы
Файлы к лабораторной работе Вы можете скачать здесь.
Даже при простом выводе текста на экран часто нужно обеспечить взаимодействие с пользователем. В данной работе мы рассмотрим вопросы вывода текста в колонках и добавление полос прокрутки. По ходу дела затроним другие полезные возможности библиотеки .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. Обработчик выбора элементов списка