- •Предисловие
- •1 Среда визуального программирования visual studio.Net
- •1.1 Введение в объектно - ориентированное программирование
- •1.2 Понятие о событийном управлении Windows
- •1.3 Основные окна среды Visual Studio.Net
- •1.4 Основные структурные элементы разработки проекта c#
- •1.5 Пример первой учебной программы
- •2.1 Технология визуального проектирования форм
- •1.6 Вопросы для самопроверки
- •2 Элементы управления
- •2.2 Элементы управления панели Toolbox
- •2.3 Пример использования элементов управления
- •2.4 Вопросы для самопроверки
- •3 Графический интерфейс языка c#
- •3.1 Пространство имен System.Drawing
- •3.2 Класс Graphics
- •3.3 Пример программной реализации
- •3.4 Вопросы для самопроверки
- •4 Использование меню в приложении
- •4.1 Меню программы
- •4.2 Создание инструментальной панели приложения
- •4.3.Вопросы для самопроверки
- •5 Использование диалоговых меню
- •5.1 Обработчики событий для работы с матрицей
- •5.2 Обработчик событий для открытия файла
- •5.3 Обработчик событий для записи в файл
- •5.4 Обработчик событий для работы с текстом
- •5.5 Вопросы для самопроверки
- •6 Многооконные приложения
- •6.1 Создание «кнопочной» главной формы
- •6.2 Добавление новых форм приложения
- •6.3 Обработчики событий главной формы
- •6.4 Табличная форма представления и редактирования значений
- •6.5 Графическая форма представления прямоугольников
- •6.6 Вопросы для самопроверки
- •7. Понятие класса
- •7.1 Понятие класса
- •7.2 Состав класса
- •7.3 Методы класса
- •7.4 Структура объекта
- •7.5 Пример учебной программы
- •7.6 Доступ к полям
- •7.7 Вопросы для самопроверки
- •1 Понятие класса?
- •8 Элементы классов
- •8.1 Конструкторы
- •8.2 Деструкторы
- •8.3 Свойства
- •8.4 Параметр по ссылке this
- •8.5 События класса
- •8.6 Перегрузка операций класса
- •8.7 Вопросы для самопроверки
- •9 Принципы ооп
- •9.1 Понятие инкапсуляции
- •9.2 Понятие наследования
- •9.3 Вопросы для самопроверки
- •10 Принцип полиморфизма
- •10.1 Понятие полиморфизма
- •10.2 Пример статического наследования методов
- •10.3 Пример динамического наследования методов
- •10.4 Вопросы для самопроверки
- •11 Использование интерфейсов
- •11.1 Понятие интерфейса
- •11.2 Синтаксис интерфейса
- •11.3 Использование стандартного интерфейса iEnumerable
- •11.4 Вопросы для самопроверки
- •12 Композиция и коллекция классов
- •12.1 Понятие композиции и коллекции класса
- •12.2 Пример использования композиции и коллекции класса
- •12.3 Некоторые коллекции Framework
- •12.4 Коллекция ArrayList
- •12.5 Вопросы для самопроверки
- •13 Делегаты
- •13.1 Понятие делегата
- •13.2 Описание делегата
- •13.3 Пример использования делегата
- •13.4 Совместимость делегатов
- •13.5 Методы базовых классов делегатов
- •13.6 Вопросы для самопроверки
- •14 События
- •14.1 Понятие события
- •14.2 Некоторые часто используемые события среды Visual Studio.Net
- •14.3 Пример использования стандартных событий классов
- •14.4 Нестандартные события классов
- •14.5 Вопросы для самопроверки
- •Приложение а Ответы на вопросы для самопроверки
- •1 Понятие класса?
- •Предметный указатель
- •Список литературы
5.3 Обработчик событий для записи в файл
Следующей по очереди на инструментальной панели находится кнопка записи клиентской области приложения в файл – команда SaveT. Рассмотрим порядок действий при написании этого обработчика события.
Для того чтобы реализовать в нашем приложении обработчик записи в файл, нам потребуется элемент SaveFileDialog. Перетащим значок этого элемента из окна Toolbox в окно нашей формы. Значок элемента SaveFileDialog1 появится внизу на панели под нашей формой.
Настраивая свойства элемента SaveFileDialog1, нужно отредактировать его свойства Filter и FileName.
Свойству Filter необходимо указать тип тестового файла – Text files|*.txt, а свойству FileName шаблон имени документа – doc1.txt. При этом по умолчанию документы будут сохраняться в файле с этим именем.
Дополнение к исходному коду программы:
private void saveTToolStripMenuItem_Click(object sender,
EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK &&
saveFileDialog1.FileName.Length > 0)
{
richTextBox1.SaveFile(saveFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
this.Text = "Файл [" + saveFileDialog1.FileName + "]";
}
}
Дополнительно, для информации, полный путь к записываемому файлу будет отображен в заголовке главного окна нашего приложения.
Второй параметр метода richTextBox1.SaveFile позволяет выбрать тип сохраняемого файла. В нашем примере программа настроена на работу только с текстовыми файлами. Если передать через этот параметр значение RichTextBoxStreamType.RichText, то документ будет сохранен в формате RTF.
Рисунок 5.3 – Пример работы приложения с текстом
5.4 Обработчик событий для работы с текстом
Для работы с текстом клиентской области нашего приложения предусмотрено два обработчика событий, соответствующих командам меню очистка и преобразование.
Обработчик события очистка текста содержит один метод редактора текстов richTextBox1, который удаляет все строки текста:
private void clearTToolStripMenuItem_Click(object sender,
EventArgs e)
{
richTextBox1.Clear();
}
Обработчик события преобразования текста предназначен для выделения из текста клиентской области значений матрицы 6*6, обычно считанной из файла.
Исходный код метода обработки текста имеет следующий вид:
private void obraboToolStripMenuItem_Click(object sender, EventArgs e)
{
string ss;
string[] clova;
int k, n;
int[] masi = new int[100];
n = 0;
ss = richTextBox1.Text;
clova = ss.Split('\t', ' ');
for (int i = 0; i < clova.Length; i++)
{
k = clova[i].Length;
if (k == 2 || k == 3)
{
masi[n] = Int32.Parse(clova[i]); n++; }
richTextBox1.AppendText(i.ToString() + " = " + clova[i] +
" k= " + k.ToString() + "\n");
}
int j1, j2; j1 = j2 = 0;
for (int i = 0; i < 36; i++)
{
a[j1, j2] = masi[i];
j2++;
if (j2 == 6) { j1++; j2 = 0; }
if (j1 == 6 && j2 == 6) break;
}
}
Здесь необходимы некоторые комментарии.
Объявлен массив clova типа string, в который из текста клиентской области приложения с помощью метода Split заносятся любые сочетания символов выделенных знаком табуляции, пробелом или возвратом :
ss = richTextBox1.Text;
clova = ss.Split('\t',' ','\n');
Определяется общее количество слов текста clova.Length.
В цикле все слова длиною 2 или 3 символа преобразуются в целые числа и записываются в массив целых чисел masi. Одновременно все слова и их длина выводятся на экран в клиентскую область (для контроля).
В последней части обработчика события выделенные целые числа из массива переписываются в матрицу 66.
Примерный вид содержимого клиентской области:
Матрица создана
12 34 94 54 39 53
59 23 49 99 53 48
66 27 48 46 67 47
92 15 16 85 75 73
33 19 56 38 95 53
24 39 40 16 81 49
0 = Матрица k= 7
1 = создана k= 7
2 = k= 0
3 = k= 0
4 = 12 k= 2
5 = 34 k= 2
6 = 94 k= 2
7 = 54 k= 2
8 = 39 k= 2
9 = 53 k= 2
10 = k= 0
11 = 59 k= 2
12 = 23 k= 2
13 = 49 k= 2
14 = 99 k= 2
15 = 53 k= 2
16 = 48 k= 2
17 = k= 0
18 = 66 k= 2
19 = 27 k= 2
20 = 48 k= 2
21 = 46 k= 2
22 = 67 k= 2
23 = 47 k= 2
24 = k= 0
25 = 92 k= 2
26 = 15 k= 2
27 = 16 k= 2
28 = 85 k= 2
29 = 75 k= 2
30 = 73 k= 2
31 = k= 0
32 = 33 k= 2
33 = 19 k= 2
34 = 56 k= 2
35 = 38 k= 2
36 = 95 k= 2
37 = 53 k= 2
38 = k= 0
39 = 24 k= 2
40 = 39 k= 2
41 = 40 k= 2
42 = 16 k= 2
43 = 81 k= 2
44 = 49 k= 2
45 = k= 0
46 = k= 0
После визуальной проверки клиентскую область можно очистить.
Далее запускаем режим печати матрицы (смотри рисунок 5.4):
Рисунок 5.4 – Печать матрицы после преобразования клиентской области текста.
Видно, что нет привычного сообщения «Матрица создана».
