Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Благодарности 6 страница






Если для реализации функциональности приложения Вам потребуются новые поля, добавьте их после приведенного выше фрагмента кода.

Инициализация приложения

Для инициализации приложения конструктор класса Form1 вызывает метод InitializeComponent, о котором мы рассказывали в предыдущей главе:

public Form1()
{
InitializeComponent();

//
// TODO: Add any constructor code after
// InitializeComponent call
//
}

Этот метод создает и инициализирует все элементы управления формы, а также задает их размеры и расположение в окне.

При необходимости выполнить какую-либо дополнительную инициализацию Вы можете добавить вызовы других методов, расположив их в теле конструктора после вызова метода InitializeComponent.

На самом первом шаге инициализации, на базе класса System.Resources.ResourceManager создается система управления ресурсами, необходимая для работы с национальными языками и параметрами:

System.Resources.ResourceManager resources = new
System.Resources.ResourceManager(typeof(Form1));

В качестве параметра конструктору класса System.Resources.ResourceManager передается тип создаваемого ресурса. В данном случае это тип формы Form1.

Далее метод InitializeComponent создает все необходимые элементы управления, добавленные в форму на этапе проектирования:

this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label4 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
this.label5 = new System.Windows.Forms.Label();

Когда все элементы управления созданы, необходимо их проинициализировать и разместить в окне формы. На время выполнения этой операции метод InitializeComponent отключает на время механизм генерации сообщений, связанных с размещением элементов в окне формы:

this.SuspendLayout();

Инициализация и размещение элементов управления выполняется путем изменения значений соответствующих свойств.

Инициализация текстовых полей

Рассмотрим процесс инициализации текстовых полей на примере поля с надписью «DataRecovery.Ru»:

//
// label1
//
this.label1.Font = new System.Drawing.Font(" Haettenschweiler",
26.25F, System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.label1.ForeColor =
System.Drawing.Color.FromArgb(((System.Byte)(67)),
((System.Byte)(128)), ((System.Byte)(165)));
this.label1.Location = new System.Drawing.Point(128, 8);
this.label1.Name = " label1";
this.label1.Size = new System.Drawing.Size(216, 40);
this.label1.TabIndex = 0;
this.label1.Text = " DataRecovery.Ru";

Для отображения этой надписи мы использовали шрифт Haettenschweiler. При этом мы создали этот шрифт как объект класса System.Drawing.Font, а затем присвоили ссылку на этот объект свойству this.label1.Font. Тем самым был изменен шрифт, использованный для отображения надписи.

Подробно о шрифтах мы расскажем в 10 главе, а сейчас только отметим, что первый параметр конструктора класса System.Drawing.Font задает название шрифта, второй — его размер, третий — стиль (обычный, наклонный, жирный и т.д.).

Четвертый параметр конструктора позволяет выбрать единицу измерения для указания размера шрифта. В нашем случае это пункт (1/72 дюйма). И, наконец, пятый параметр указывает номер страницы Unicode, который должен быть использован для отображения текстовой строки. Значение 204 обозначает страницу с символами кириллицы.

Чтобы задать цвет надписи, необходимо изменить свойство this.label1.ForeColor. Дизайнер форм создал объект класса System.Drawing.Color.FromArgb, позволяющий выбрать цвет как набор трех компонентов — красной, зеленой и голубой. Значения компонентов цвета изменяются от 0 до 255.

Далее задается расположение надписи. С этой целью изменяется значение свойства this.label1.Location. Дизайнер форм задал координаты в виде объекта класса System.Drawing.Point, передав соответствующему конструктору через параметры координаты надписи по горизонтальной и вертикальной оси.

Что же касается размеров надписи, то они задаются при помощи свойства this.label1.Size. Дизайнер присвоил этому свойству ссылку на объект класса System.Drawing.Size, задающий размер объекта по горизонтали и вертикали.

Свойство this.label1.Name задает идентификатор (имя) надписи. С помощью этого идентификатора можно, например, изменять текста надписи или ее другие атрибуты.

Что же касается текста надписи, то он задается свойством this.label1.Text.

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

Как видите, инициализация и размещение простой текстовой надписи занимает несколько строк программного текста. К счастью, дизайнер форм создает этот текст для Вас автоматически.

Инициализация полей ввода текста

В процессе инициализации полей, предназначенных для ввода текста, определяется значение пяти различных свойств:

//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(104, 158);
this.textBox1.Name = " textBox1";
this.textBox1.Size = new System.Drawing.Size(104, 20);
this.textBox1.TabIndex = 3;
this.textBox1.Text = " ";

Свойства this.textBox1.Location и this.textBox1.Size задают, соответственно, расположение и размеры поля. Мы рассказывали о них в предыдущем разделе. Аналогично, дизайнер форм задал имя поля при помощи свойства this.textBox1.Name, и порядковый номер для табуляции в поле this.textBox1.TabIndex.

Свойство this.textBox1.Text позволяет задать надпись, которая появится в поле ввода сразу после отображения формы. Мы этой возможностью не пользуемся, и поэтому в данное свойство записывается пустая строка.

Инициализация графических изображений

При размещении в форме графического изображения (такого, например, как логотип компании), мы добавляли объект в ресурсы приложения, изменяя свойство Image. Предварительно мы включали файл изображения в проект, добавляя его к ресурсам приложения.

Вот как происходит инициализация элемента управления, содержащего наше изображение:

//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Bitmap)
(resources.GetObject(" pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(40, 16);
this.pictureBox1.Name = " pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(72, 88);
this.pictureBox1.TabIndex = 7;
this.pictureBox1.TabStop = false;

Здесь с помощью метода resources.GetObject мы извлекаем данные нашего изображения из ресурсов приложения. Эти данные затем приводятся к типу System.Drawing.Bitmap (растровые графические изображения), а затем полученная ссылка используется для инициализации свойства this.pictureBox1.Image.

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

Инициализация кнопок

Размеры и расположение кнопок, их имя, текст и порядок табуляции задается таким же образом, что и для текстовых полей:

//
// button1
//
this.button1.BackColor =
System.Drawing.Color.FromArgb(((System.Byte)(224)),
((System.Byte)(224)), ((System.Byte)(224)));
this.button1.Location = new System.Drawing.Point(264, 160);
this.button1.Name = " button1";
this.button1.TabIndex = 5;
this.button1.Text = " Войти";

Дополнительно кнопке назначается обработчик событий:

this.button1.Click += new System.EventHandler(this.button1_Click);

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

private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(" User: " + textBox1.Text + " \n" + " Password: " +
textBox2.Text);
}

private void button2_Click(object sender, System.EventArgs e)
{
Close();
}

Инициализация полей LinkLabel

Процедура инициализации полей LinkLabel очень похожа на процедуру инициализации обыкновенных текстовых полей Label. Отличие заключается в том, что для наших полей LinkLabel назначаются обработчики событий:

//
// linkLabel1
//
this.linkLabel1.Location = new System.Drawing.Point(40, 224);
this.linkLabel1.Name = " linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(120, 16);
this.linkLabel1.TabIndex = 9;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = " www.datarecovery.ru";
this.linkLabel1.LinkClicked += new
System.Windows.Forms.LinkLabelLinkClickedEventHandler(
this.linkLabel1_LinkClicked);

Исходные тексты обработчиков событий для полей нашей формы были описаны ранее в разделе «Ссылки на ресурсы Интернета».

Инициализация формы

Последнее, что делает метод InitializeComponent, это настройка свойств самой формы Form1.

Рассмотрим этот процесс подробнее.

Свойство this.AutoScaleBaseSize задает базовый размер для масштабирования, используемый во время отображения формы:

//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

При масштабировании формы этот размер сопоставляется с размером системного шрифта.

Цвет фона формы задается при помощи свойства this.BackColor:

this.BackColor = System.Drawing.Color.FromArgb(
((System.Byte)(245)), ((System.Byte)(248)), ((System.Byte)(255)));

Этот цвет составляется из отдельных компонентов при помощи метода System.Drawing.Color.FromArgb.

Наша форма имеет фоновое графическое изображение. Это изображение задается свойством this.BackgroundImage:

this.BackgroundImage = ((System.Drawing.Bitmap)
(resources.GetObject(" $this.BackgroundImage")));

Область формы, предназначенная для отображения элементов управления и рисования, называется клиентской областью (client area). Размеры этой области определяются свойством this.ClientSize:

this.ClientSize = new System.Drawing.Size(362, 271);

Для размещения элементов управления в окне формы используется метод this.Controls.AddRange:

this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label5, this.linkLabel2, this.linkLabel1,
this.label4, this.pictureBox1, this.button2,
this.button1, this.textBox2, this.textBox1,
this.label3, this.label2, this.label1});

Этому методу передается ссылка на массив добавляемых элементов управления.

Стиль рамки, окантовывающей окно формы, задается свойством this.FormBorderStyle:

this.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.FixedDialog;

Так как мы запросили отображение кнопки помощи в заголовке формы, дизайнер формы установил значение свойства this.HelpButton равным true:

this.HelpButton = true;

Далее в процессе инициализации метод InitializeComponent назначает форме значок, с помощью которого форма будет представлена на панели задач и в окне переключения приложений:

this.Icon =
((System.Drawing.Icon)(resources.GetObject(" $this.Icon")));

Значок загружается из ресурсов приложения методом resources.GetObject.

Кнопки максимизации и минимизации формы не нужны, поэтому свойства this.MaximizeBox и this.MinimizeBox получают значение false:

this.MaximizeBox = false;
this.MinimizeBox = false;

И последние шаги:

this.Name = " Form1";
this.Text = " Идентификация пользователя";

Здесь метод InitializeComponent задает имя формы (свойство this.Name), текст заголовка окна формы (свойство this.Text).

Завершив размещение элементов управления в окне формы, метод InitializeComponent разрешает обработку сообщений, связанных с размещением элементов в окне формы:

this.ResumeLayout(false);

Напомним, что эта обработка была отключена в самом начале работы метода InitializeComponent.

Удаление обработчика событий

Дизайнер форм позволяет назначить обработчик события для каждого элемента управления, размещенного в форме. Если в процессе проектирования формы Вы случайно дважды щелкнули элемент управления, для которого не нужно создавать обработчик события, то этот обработчик можно удалить.

Допустим, Вы по ошибке дважды щелкнули окно формы в дизайнере форм. В результате по умолчанию в исходный текст приложения будет добавлен пустой обработчик событий Form1_Load:

private void Form1_Load(object sender, System.EventArgs e)
{

}

Чтобы удалить его, откройте окно дизайнера форм и щелкните форму один раз. Далее в инструментальной панели, расположенной в верхней части окна свойств формы Properties щелкните кнопку Events. На рис. 3-22 эта кнопка показана в нажатом виде.

Рис. 3-32. Диалоговое окно событий

В результате Вы увидите список всех событий, возможных для объекта (в нашем случае для формы). На рис. 3-22 мы показали, что для события Load (загрузка формы) был создан обработчик события с именем Form1_Load. Чтобы удалить обработчик события, просто сотрите его имя.

Кстати, в этом окне Вы можете не только удалять обработчики событий, но и создавать их (что не менее важно). Для создания обработчика Вам достаточно щелкнуть в этом окне имя нужного события.

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

Допустим, при подготовке формы приложения UserLogin Вы по ошибке дважды щелкнули поле ввода идентификатора пользователя. Как результат, в исходном тексте приложения появится тело обработчика сообщения:

private void textBox1_TextChanged(object sender, System.EventArgs e)
{

}

Этот обработчик позволяет отслеживать процесс ввода текста в поле редактирования. Однако если эта возможность Вам не нужна, удалите исходный текст метода.

Удалите также код, подключающий этот обработчик события к полю редактирования:

this.textBox1.TextChanged +=
new System.EventHandler(this.textBox1_TextChanged);

Визуальное проектирование приложений C#


А.В. Фролов, Г.В. Фролов

Глава 4. Создание редактора текста.. 2

Приложение SimpleNotepad.. 2

Добавление меню... 3

Переименование меню и строк меню.. 5

Подключение меню к форме. 6

Вставка поля редактирования.. 7

Обработка событий.. 7

Работа с файлами документов.. 8

Создание нового документа. 8

Открытие существующего файла. 8

Сохранение файла. 10

Печать документа.. 12

Добавление программных компонентов для печати. 12

Редактирование меню File. 14

Подключение пространств имен. 14

Настройка параметров страницы документа. 14

Предварительный просмотр документа перед печатью.. 15

Отображение окна печати документа. 16

Обработка события PrintPage. 17

Закрытие главного окна редактора текста. 19

Реализация функций меню Edit.. 21

Реализация функций меню Format.. 22

Шрифт символов. 23

Цвет символов. 23

Стиль символов. 24

Выравнивание параграфов. 28

Реализация функций меню Help. 29

Добавление новой формы.. 29

Отображение формы.. 31

Редактирование класса HelpAboutForm.. 31

Создание инструментальной панели.. 32

Добавление инструментальной панели в окно приложения. 32

Подключение списка изображений. 32

Наполнение списка изображений. 33

Редактирование кнопок инструментальной панели. 34

Строка состояния.. 37

Добавление строки состояния. 37

Настройка свойств строки состояния. 37

Привязка строки состояния к меню.. 38

 

Глава 4. Создание редактора текста

Если форма играет роль главного окна приложения, то в ней, как правило, имеется меню, строки которого дублируются кнопками инструментальной панели. Кроме того, такое окно обычно снабжается строкой состояния. В этой главе мы создадим приложение SimpleNotepad, представляющее собой простейший текстовый редактор. Окно этого редактора мы снабдим всеми перечисленными выше компонентами — меню, инструментальной панелью и строкой состояния.

Наш редактор будет способен редактировать не только текстовые документы, но и документы в формате RTF (Rich Text Format). При этом мы воспользуемся стандартным для Microsoft Visual Studio Studio.NET компонентом RichTextBox.

Вот только основные возможности этого компонента:

 символы текста могут иметь любое шрифтовое оформление;

 доступны как растровые шрифты, так и шрифты TrueType;

 имеется возможность задавать оформление параграфов текста, такое как выравнивание влево или вправо, центровка и задание отступов;

 не вызывает особого затруднения печать документов, загруженных для редактирования;

 в компонент RichTextBox может работать как с текстом без шрифтового или какого либо другого оформления, так с документами в формате RTF.

Формат RTF предназначен для хранения текста вместе со шрифтовым оформлением и оформлением параграфов. Детальное изучение формата RTF выходит за рамки нашей книги. При необходимости вы сможете найти полное описание этого формата в MSDN (https://msdn.microsoft.com). Однако в большинстве случаев Вам не придется создавать самостоятельно текстовые файлы в формате RTF, так как для этого можно использовать многие текстовые процессоры (например, Microsoft Word for Windows или WordPad).

Чтобы Вы получили некоторое представление о том, что представляет собой текстовый файл в формате RTF, приведем небольшой пример.

Для преобразования в формат RTF мы взяли следующую текстовую строку:

This is RTF test file. This is RTF test file. This is RTF test file.

Мы загрузили эту строку в приложение SimpleNotepad (исходные тексты которого будут приведены ниже). Затем мы задали для текста шрифтовое оформление и сохранили как текст в формате RTF. Вот что получилось в результате:

{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fnil MS Sans Serif; }{\f1\fnil\fcharset2 Symbol; }{\f2\fswiss\fprq2 System; }{\f3\fswiss\fprq2 Arial; }{\f4\froman\fprq2 Calisto MT; }}
{\colortbl\red0\green0\blue0; }
\deflang1033\pard\plain\f4\fs38 This is RTF test file. This is RTF test file. This is RTF test file.
\par
\par
\par
\par }

Компонент RichTextBox можно использовать для создания достаточно мощного текстового редактора, напоминающего приложение WordPad. Однако для него можно найти и другое применение. Например, приложение может отображать с его помощью красиво оформленные сообщения.

Приложение SimpleNotepad

Создайте новое приложение с названием SimpleNotepad, используя для этого технику, описанную в предыдущих главах нашей книги.

Отредактируйте имя формы, которая по умолчанию называется Form1. Для этого, после того как мастер проектов создаст приложение, измените свойство формы Name, заменив имя Form1 на SimpleNotepadForm. Далее, в окне Solution Explorer переименуйте файл form1.cs в SimpleNotepadForm.sc.

Теперь откройте исходный текст формы, и отредактируйте метод Main таким образом, чтобы методу Application.Run передавалась ссылка на новый объект класса SimpleNotepadForm:

 

static void Main()
{
Application.Run(new SimpleNotepadForm());
}

Теперь наше пространство имен будет называться SimpleNotepad, а класс формы, играющей роль главного окна приложения — SimpleNotepadForm:

namespace SimpleNotepad
{
public class SimpleNotepadForm: System.Windows.Forms.Form
{

}
}

Создавая приложения, старайтесь называть пространства имен и классы так, чтобы из их названия было понятно назначение этих пространств имен и приложений. Если Вам нужно создавать пространства имен, которые будут использоваться сторонними разработчиками, добавляйте к названию пространства имен какую-либо уникальную строку, например, название своей компании.

Далее замените стандартный значок, создаваемый системой Microsoft Visual Studio.NET каким-нибудь другим. Используйте для этого технику, описанную в предыдущей главе. Например, для приложения SimpleNotepad Вы можете использовать файл note01.ico или другой из каталога Program Files\Microsoft Visual Studio.NET\Common7\Graphics\icons\Writing.

Вы также можете изменить размеры окна, принятые по умолчанию, т.к. в окне размером 300 на 300 пикселов редактировать текст неудобно.

Добавление меню

Для того чтобы добавить меню в главное окно нашего приложения, перетащите из панели инструментов Toolbox значок меню с названием MainMenu.

Как только Вы это сделаете, окно дизайнера форм примет вид, показанный на рис. 4-1.

Рис. 4-1. Добавление меню

В нижней части этого окна появится значок программного компонента — меню mainMenu1. Кроме того, непосредственно под заголовком окна появится пустое пока меню, представленное полем с надписью Type Here (что можно перевести как «печатать здесь»).

Напечатайте в этом поле строку «& File». В результате этого в окне нашего приложения появится меню File (рис. 4-2).

Рис. 4-2. Создание меню File

Обратите внимание, что первая буква в названии меню подчеркнута. Это получилось потому, что мы поставили перед ней префикс &. Этим префиксом отмечается буква, предназначенная для ускоренного выбора меню (или строки меню) при помощи клавиатуры.

По мере того как Вы будете вводить названия строк меню File, поле ввода Type Here будет опускаться вниз. Таким способом Вы сможете ввести все необходимые строки данного меню.

Чтобы отредактировать строку меню, щелкните ее правой клавишей мыши. На экране появится контекстное меню, показанное на рис. 4-3.

Рис. 4-3. Контекстное меню

С помощью строки Insert New Вы можете вставить новую строку меню между уже существующих строк. Строка Insert Separator предназначена для вставки разделительной линии между строками меню. И, наконец, при помощи строки Edit Names можно отредактировать идентификаторы строк и меню.

Если же Вам нужно изменить введенные названия строк и меню, это можно сделать по месту, выбрав нужную строку мышью.

Создайте меню File, чтобы оно было таким, как показано на рис. 4-4.

Рис. 4-4. Меню File

По своему назначению строки этого меню полностью соответствуют строкам стандартного редактора текста Microsoft Notepad.

Далее создайте меню Edit (рис. 4-5).

Рис. 4-5. Меню Edit

В меню Edit мы реализуем только самые важные функции, опустив пока поиск, замену и некоторые другие стандартные функции приложения Microsoft Notepad.

Меню Format (рис. 4-6) состоит только из одной строки Font, с помощью которой пользователь сможет изменить шрифт текста.

Рис. 4-6. Меню Format

И, наконец, последнее меню нашего приложения, это меню Help (рис. 4-7).

Рис. 4-7. Меню Help

В этом меню мы предусмотрели только одну строку — About.

Переименование меню и строк меню

Прежде чем продолжить работу с меню, давайте переименуем идентификаторы меню и строк меню таким образом, чтобы с ними было удобнее работать в программе. Для этого в окне дизайнера формы щелкните правой клавишей мыши главное меню приложения и затем выберите из контекстного меню строку Edit Names (рис. 4-8).

Рис. 4-8. Редактирование имен меню и строк меню

Как только Вы это сделаете, рядом с каждой строкой меню появится имя, созданное дизайнером форм по умолчанию (рис. 4-9). Это имена вида menuItem1, menuItem2 и т.д.

Рис. 4-9. Просмотр имен меню и строк меню

Отредактируйте имена меню и строк меню, как это показано на рис. 4-10.

Рис. 4-10. Новые имена меню File

Эту процедуру нужно будет повторить для каждого создаваемого Вами меню и для каждой строки меню. При этом меню верхнего уровня File, Edit, Format и Help должны называться menuFile, menuEdit, menuFormat и menuHelp. Имена строк меню формируются путем добавления к имени меню текста, отображаемого в строке меню. Например, строка New меню File называется menuFileNew, а строка About меню Help — menuHelpAbout.

Разумеется, Вы можете придумать и свою собственную систему именования меню и строк меню, лишь бы она была понятна для Вас и других разработчиков приложения, которые, возможно, будут изучать его исходные тексты.

Подключение меню к форме

Теперь, когда меню готово, его нужно подключить к форме. Для этого отредактируйте свойство формы с именем Menu. Раскройте список возможных значений этого свойства и выберите в этом списке строку mainMenu1.

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

Вставка поля редактирования

Редактирование текста в нашем приложении будет выполнять компонент RichTextBox. Этот компонент очень похож на текстовый редактор TextBox, с которым мы уже имели дело в предыдущей главе.

Перетащите из панели Toolbox в форму приложения simpleNotepad компонент RichTextBox.

Настройте свойства компонента, чтобы он занимал все окно приложения. Далее отредактируйте свойство Dock. Это свойство задает расположение выбранного компонента внутри содержащей его формы (рис. 4-11).

Рис. 4-11. Редактирование свойства Dock

Выберите расположение по центру, щелкнув кнопку, показанную на рис. 4-8 в нажатом состоянии.

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

Запустите полученное приложение на выполнение. В результате на экране должно появиться окно, показанное на рис. 4-12 (в нем мы уже набрали две строки текста).

Рис. 4-12. Работа над дизайном редактора текста завершена

Обработка событий

Обработчики событий от строк меню создаются таким же образом, что и обработчики событий от кнопок. Чтобы создать обработчик события для строки меню, ее нужно щелкнуть дважды левой клавишей мыши.

Создайте обработчики событий для всех строк меню File, Edit, Format и Help, дважды щелкнув каждую строку этих меню. Все обработчики событий создаются с пустым телом:

private void menuFileNew_Click(object sender, System.EventArgs e)
{
}

Чтобы наполнить меню нужной нам функциональностью, нам придется написать вручную код для этих обработчиков событий.

Работа с файлами документов

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

Создание нового документа

Если пользователь выберет строку New из меню File, наш редактор текста SimpleNotepad должен создать новый текстовый документ. В простейшем случае для этого достаточно просто очистить содержимое окна редактирования, вызвав метод Clear:

private void menuFileNew_Click(object sender, System.EventArgs e)
{
textBox1.Clear();
}

Метод Clear вызывается для объекта textBox1, т.е. для нашего окна редактирования, занимающего все пространство формы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.