Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка Windows-приложений в среде программирования Visual Studio.Net. Учебно-методическое пособие по дисциплине Информатика и программирование

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
700 Кб
Скачать
☆

Процесс создания меню состоит из следующих шагов:

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]