Разработка Windows-приложений в среде программирования Visual Studio.Net. Учебно-методическое пособие по дисциплине Информатика и программирование
.pdfПроцесс создания меню состоит из следующих шагов:
1)перенести объект MenuStrip на форму;
2)ввести заголовки нужных пунктов меню, переводя курсор в нужном направлении.
Названия пунктов меню, как объектов, можно менять в окне свойств. Каждый пункт меню имеет событие Click, которое можно запрограммировать.
Основные свойства объекта MenuItem:
Checked – превращает пункт меню в переключатель. Возле команды появляется флажок, который показывает, включен или выключен данный пункт меню;
DefaultItem – логическое свойство, указывающее, что данное меню является используемым по умолчанию;
Enavled – логическое свойство, определяющее, доступен в данный момент выбранный пункт меню пользователю или нет;
IsParent – логическое свойство, определяющее, имеет данный пункт меню подменю или нет;
Visible – логическое свойство, определяющее, виден в данный момент этот пункт меню или нет. Оно используется для временного скрытия пунктов меню;
Text – определяет текст пункта меню. С помощью этого свойства можно изменять надписи на пунктах меню в ходе выполнения приложения.
Каждый пункт меню имеет имя, поэтому работа с пунктами меню в ходе выполнения программы выполняется аналогично обычным объектам.
Привязка меню к форме осуществляется с помощью значения свойства MainMenuStrip формы.
Контекстное меню создается с помощью элемента управления ContextMenuStrip. Такие меню вызываются щелчком правой кнопки мыши и могут быть размещены в любом месте формы. При отладке контекстное меню появляется в форме, где его можно редактировать так же, как и основное меню. В ходе выполнения программы контекстное меню не появляется.
Для связывания контекстного меню с элементом управления на форме необходимо присвоить значению свойства ContextMenuStrip этого элемента имя соответствующего контекстного меню.
11
Разработка контекстного меню осуществляется так же, как и основного. Отличие состоит в том, что первый элемент контекстного меню является его именем и не выводится при выполнении программы. Элементы контекстного меню имеют те же свойства, что и основного, и точно так же программируются.
Разным элементам управления в форме может быть сопоставлено одно и то же контекстное меню.
5. Создание многооконных приложений в Visual Studio .Net
Все приложения Windows делятся на два вида – однооконные (SDI
– Single Document Interface) и многооконные (MDI – Multi Document Interface). SDI-приложения имеют одну или несколько форм, которые выводятся на экран независимо друг от друга. Примерами SDIприложений являются такие программы, как калькулятор и Paint. MDIприложения имеют главную форму (называемую родительской, или Parent Form), внутри которой отображаются подчиненные формы (называемые дочерними, или Child Forms). Каждый документ открывается в своем дочернем окне. Примерами многооконных приложений являются приложения Word и Excel. Сама система Visual Studio .Net также является многооконным приложением. В MDIприложениях при закрытии главной формы автоматически закрываются все ее дочерние формы. Диалоговые окна не влияют на работу ни SDIприложений, ни MDI-приложений, они в любом случае отображаются поверх всех форм.
Создание SDI-приложения не требует дополнительных усилий. Поумолчанию любое приложение, создаваемое с помощью среды разработки Visual Studio .Net, является SDI-приложением. Для создания же MDI-приложения требуется установить определенные свойства некоторым формам и написать соответствующий код. При этом, если все дочерние формы однотипны, то в проект достаточно добавить только одну дочернюю форму, т.к. на экране в процессе выполнения программы отображается наследный экземпляр дочерней формы. Поэтому даже при наличии одной дочерней формы внутри главной формы можно отобразить сколько угодно ее экземпляров. Если же дочерние формы различны, то в проект можно добавить только по одной дочерней форме каждого вида.
12
Для создания MDI-приложения необходимо в той форме, которая является главной, установить значение свойства IsMDIContainer, равное True (по умолчанию устанавливается значение False). У дочерних форм никаких специальных свойств устанавливать не требуется.
Для загрузки экземпляра дочерней формы необходимо написать следующий код (Form2 – имя дочерней формы):
Visual Basic .Net:
Dim newmdichild As New Form2 newmdichild.MdiParent = Me newmdichild.Show()
Visual C# .Net:
Form newmdichild = new Form2(); newmdichild.MdiParent = this; newmdichild.Show();
После загрузки дочерней формы ее можно обрабатывать, как обычную. В частности, она имеет собственное событие Load, где можно, например, изменять ее заголовок:
Visual Basic .Net:
Me.Text = "Вторая дочерняя форма"
Visual C# .Net:
this.Text = "Моя вторая форма";
и записать другие действия. Для скрытия дочерней формы с экрана используются методы Hide и Close, так же как и для обычной формы, например:
Visual Basic .Net:
Me.Hide()
или
Me.Close()
Visual C# .Net:
this.Hide();
или
this.Close();
Ключевое слово Me (this) здесь относится к дочерней форме, т.к. в данный момент эта форма является текущей. Дочерние формы можно закрывать и обычным образом (через кнопку закрытия окна Windows).
13
Если же нужно закрыть дочернюю форму из главной (например, из соответствующего пункта меню), то значение методов Hide и Close меняется. Например, для закрытия текущей дочерней формы метод Close применяется к объекту ActiveMDIChild:
Visual Basic .Net:
Me.ActiveMdiChild.Close()
Visual C# .Net:
this.ActiveMdiChild.Close();
Ключевое слово Me (this) здесь относится к родительской форме, т.к. в данный момент она является текущей. Для закрытия всех дочерних форм внутри родительской можно использовать код:
Visual Basic .Net:
Dim f As New Form
For Each f In Me.MdiChildren
f.Close()
Next
Visual C# .Net:
foreach (Form f in this.MdiChildren)
{
f.Visible = false;
}
Ключевое слово Me (this)здесь также относится к родительской форме. Дочерние окна внутри родительской формы можно упорядочивать по вертикали, по горизонтали, каскадом или по значкам. Такая
возможность имеется во многих программах (Word, Excel и др.). Для реализации этой возможности в Visual Basic .Net используют метод LayoutMDI родительской формы, например:
Visual Basic .Net:
Me.LayoutMdi(MdiLayout.TileVertical)
Me.LayoutMdi(MdiLayout.TileHorizontal)
Me.LayoutMdi(MdiLayout.Cascade)
Me.LayoutMdi(MdiLayout.ArrangeIcons)
Visual C# .Net:
this.LayoutMdi(MdiLayout.TileVertical);
this.LayoutMdi(MdiLayout.TileHorizontal);
this.LayoutMdi(MdiLayout.Cascade);
this.LayoutMdi(MdiLayout.ArrangeIcons);
14
Ключевое слово Me (this) здесь также относится к родительской форме.
6. Работа с файлами данных в Visual Studio .Net
Для работы с бинарными файлами используется объект FileStream, создающий канал связи с файлом. Для чтения из файла используется объект BinaryReader, для записи в файл – объект BinaryWriter. Аналогично, для текстовых файлов используются объекты StremReader и StreamWriter соответсвенно.
Эти объекты не наносятся на форму, а динамически создаются в ходе работы приложения, поэтому они отсутствуют на панели инструментов ToolBox.
Порядок действий по чтению данных из файла следующий:
1)открыть файл;
2)открыть поток чтения данных из файла;
3)создать объект BinaryReader или StreamReader;
4)прочесть данные;
5)закрыть поток чтения данных из файла.
Объект FileStream создается со следующими атрибутами:
FileStream (имя файла, вид работы с файлом, операции с файлом).
Имя файла должно быть полным, т.е. включать в себя все
вложенные папки. Рекомендуется получать имя файла с помощью элемента OpenFileDialog. Для чтения данных из файла используются методы ReadInt32, ReadSingle и другие, для каждого типа переменной используется свой метод. Для чтения данных из текстовых файлов используются следующие методы объекта StreamReader:
Read (массив, начало, количество символов) – считывает заданное количество символов в символьный массив, начиная с аргумента, указанного в позиции начало. Если данный метод не имеет аргументов, то просто считывается очередной символ;
ReadLine – считывает очередную строку из текстового файла; ReadToEnd – считывает все данные из текстового файла. Рассмотрим пример. Пусть имя файла определено с помощью
объекта OpenFileDialog и помещено в переменную Fil. Необходимо прочитать из этого файла значения переменных La и Ca типа Single и
15
значения переменных N и L типа Integer. Код, реализующий эти операции, следующий:
Visual Basic .Net:
Dim Fil As String
Dim La, Ca As Single
Dim N, L As Integer
Fil = OpenFileDialog1.FileName
OpenFileDialog1.OpenFile()
Dim BR As BinaryReader
Dim FS As FileStream
FS = New FileStream(Fil, FileMode.Open,
FileAccess.Read)
BR = New BinaryReader(fs)
La = BR.ReadSingle
Ca = BR.ReadSingle
N = BR.ReadInt32
L = BR.ReadInt32
BR.Close()
FS.Close()
Visual C# .Net:
string fil; Single La, Ca; Int16 N, L;
fil = openFileDialog1.FileName; FileStream FS=new
FileStream(fil,FileMode.Open,FileAccess.Read); BinaryReader BR = new BinaryReader(FS); La = BR.ReadSingle();
Ca = BR.ReadSingle(); N = BR.ReadInt16();
L = BR.ReadInt16(); BR.Close(); FS.Close();
Для чтения всех данных из текстового файла можно использовать следующий код (имя файла также определяется с помощью объекта OpenFileDialog и помещается в переменную Fil):
Visual Basic .Net:
Dim Fil As String
Dim Txt As String
Fil = OpenFileDialog1.FileName
Dim SR As StreamReader
Dim FS As FileStream
FS = New FileStream(Fil, FileMode.Open)
SR = New StreamReader(fs)
Txt=SR.ReadToEnd
16
SR.Close()
FS.Close()
Visual C# .Net:
string fil,txt;
fil = openFileDialog1.FileName; FileStream FS=new
FileStream(fil,FileMode.Open,FileAccess.Read); StreamReader SR = new StreamReader(FS); txt = SR.ReadToEnd();
SR.Close();
FS.Close();
Порядок действий по записи данных в файл следующий:
1)создать файл или открыть существующий файл;
2)создать поток записи данных в файл;
3)создать объект BinaryWriter или StreamWriter;
4)записать данные в файл;
5)закрыть поток записи в файл.
Для записи данных в файл используется метод Write объекта
BinaryWriter. Данный метод является общим для всех типов переменных. Для записи данных в текстовый файл используются следующие методы объекта StreamWriter:
Write(Data) – записывает данные, указанные в аргументе Dara, в файл. Этот метод может применяться для данных любых типов, кроме типа Data. Для записи дат их необходимо предварительно преобразовывать в строки;
WriteLine(Data) – записывает очередную строку в файл. Рассмотрим пример. Пусть имя файла определено с помощью
объекта SaveFileDialog и помещено в переменную Fil. Требуется записать в этот файл значения переменных La и Ca типа Single и переменных N и L типа Integer. Код, реализующий эти операции, следующий:
Visual Basic .Net:
Dim Fil As String
Dim La, Ca As Single
Dim N, L As Integer
Fil = Savefiledialog1.FileName
Dim BW As BinaryWriter
Dim FS As FileStream
FS = New FileStream(Fil, FileMode.OpenOrCreate,
FileAccess.ReadWrite)
17
BW = New BinaryWriter(FS)
BW.Write(La)
BW.Write(Ca)
BW.Write(N)
BW.Write(L)
BW.Close()
FS.Close()
Visual C# .Net:
string fil; Single La=0, Ca=0; Int16 N=0, L=0;
fil = openFileDialog1.FileName; FileStream FS=new
FileStream(fil,FileMode.Open,FileAccess.Read); BinaryWriter BW = new BinaryWriter(FS); BW.Write(La);
BW.Write(Ca);
BW.Write(N);
BW.Write(L);
BW.Close();
FS.Close();
В программах на C# обязательно присвоение значений переменным.
Аналогично осуществляется запись в текстовые файлы. Текстовые файлы по умолчанию сохраняются в кодировке UTF-8. Кроме неё, в Windows имеется ещё три вида кодировки. Если необходимо использовать другую кодировку, следует добавить соответствующий аргумент к объекту StreamWriter:
StreamWriter (объект FileStream,вид кодировки).
Также можно выделить следующие методы объекта FileStream: Lock (позиция, длина) – блокирует открытый файл или его часть с
заданной позиции заданной длины;
Seek (смещение, позиция) – устанавливает текущую позицию в файле путём смещения относительно заданной позиции. Константа позиция имеет следующие значения: Begin (смещение относительно начала файла), Current (смещение относительно текущей позиции в файле), End (смещение относительно конца файла).
Следует отметить, что объекты чтения из записи из файлов принадлежат к базовому классу System.IO, поэтому этот класс необходимо предварительно импортировать в проект.
18
СПИСОК ЛИТЕРАТУРЫ
1.Прайс Дж., Гэнделрой М. Visual C# .Net. Полное руководство: Пер. с англ. – СПб.: Корона Принт, 2008. – 690 с.
2.Патрик Г., Крейг К. Visual Basic 2005. Рецепты программирования: Пер. с англ. – СПБ.: БХВ Санкт-Петербург, 2008. – 752 с.
19
Учебно-методическое пособие
РАЗРАБОТКА WINDOWS-ПРИЛОЖЕНИЙ В СРЕДЕ ПРОГРАММИРОВАНИЯ
VISUAL STUDIO .NET
по дисциплине
«Информатика и программирование» для студентов бакалавриата направления 09.03.03
«Прикладная информатика»
Подписано в печать 29.02.2016г. Формат 60х90 1/16. Объём 1,3 усл.п.л. Тираж 75 экз. Изд. № 7. Заказ 34.
20
