Главная страница
Навигация по странице:

  • Потоковые классы. Stream

  • Read , Write , Seek , Flush и Close .Класс FileStream

  • MemoryStream , BufferedStream и NetworkStream

  • Встроенные типы данных и потоки.

  • BinaryReader и BinaryWriter

  • Классы TextReader и TextWriter.

  • Классы StringReader и StringWriter

  • Классы StreamReader и StreamWriter

  • Классы File и FileInfo.

  • РАЗРАБОТКА МНОГООКОННОГО ПРИЛОЖЕНИЯ

  • Свойства формы NotepadC

  • Пункты главного меню приложения NotepadC

  • IsMdiContainer

  • Разработка gui. Создание sdiприложений обработка событий


    Скачать 361.78 Kb.
    НазваниеРазработка gui. Создание sdiприложений обработка событий
    Дата14.10.2022
    Размер361.78 Kb.
    Формат файлаdocx
    Имя файла14.10.docx
    ТипЛабораторная работа
    #733575
    страница6 из 7
    1   2   3   4   5   6   7

    Операции ввода/вывода данных в .NЕТ


    Поток – это перенос данных между программой и любым устрой- ством ввода/вывода. Данные могут рассматриваться как поток байтов, символов или объектов. В пространстве имен System.IO есть не- сколько классов, позволяющих использовать различные устройства хранения, если только данные можно трактовать как байты или сим- волы.

    Потоковые классы. Stream — абстрактный класс, который явля- ется базовым для чтения и записи байтов в некоторое хранилище дан- ных. Этот класс поддерживает синхронные и асинхронные чтение и запись. Класс Stream содержит типичные методы: Read , Write, Seek, Flush и Close.

    Класс FileStream, который является производным от класса Stream, предоставляет операции чтения и записи последовательности байтов в файл. Конструктор FileStream создает экземпляр потока. Перегружен- ные методы класса Stream осуществляют чтение и запись в файл. У класса Stream есть и другие производные классы: MemoryStream, BufferedStream и NetworkStream (в System.Net.Sockets).

    Программа 1. Запись и чтение 10 байтов в/из файл(а). Пример вы- полнить дважды. Первый раз программа создаст файл и запишет в него числа, а во второй раз прочитает и распечатает часть файла

    using System.IO; void Main() {

    byte [] data = new byte [10];

    FileStream fs = new FileStream( "FileStreamTest.txt", FileMode.OpenOrCreate);

    if (fs.Length == 0) { Console.WriteLine("Writing Data...");

    for (short i = 0; i < 10; i++) data[i] = (byte)i; fs.Write(data, 0, 10); // Запись данных

    } else {

    fs.Seek(-5, SeekOrigin.End); // Ищем конец

    int count = fs.Read(data, 0, 10); // Чтение данных

    for (int i = 0; i < count; i++) Console.WriteLine(data[i]);

    }

    fs.Close();

    }
    Встроенные типы данных и потоки. Если необходимо прочитать

    в поток или записать из потока простой тип, такой как Boolean, String или Int32, следует использовать классы BinaryReader и BinaryWriter. Нужно создать соответствующий поток (напимер, FileStream) и пере- дать его в качестве параметра в конструктор BinaryReader или BinaryWriter. Потом можно использовать один из перегруженных ме- тодов Read или Write для чтения данных из потока или записи данных в поток.
    Программа 2. Запись и чтение 10 чисел в/из файл(а). Пример вы- полнить дважды. Сначала файл создается, и в него записываются дан- ные. Во второй раз данные читаются из файла.

    void Main() {

    FileStream fs = new FileStream( "BinaryTest.bin", FileMode.OpenOrCreate);

    if (fs.Length == 0) { Console.WriteLine("Writing Data..."); BinaryWriter w = new BinaryWriter(fs);

    for (short i = 0; i < 10; i++) w.Write(i); // Запись w.Close () ;

    } else {

    BinaryReader r = new BinaryReader(fs);

    for (int i = 0; i < 10; i++) Console.WriteLine(r.ReadInt16()); r.Close();

    }

    fs.Close();

    }
    Классы TextReader и TextWriter. В абстрактных классах

    TextReader и TextWriter данные рассматриваются как последователь- ный поток символов (текст). TextReader имеет следующие методы: Close, Peek (Считывание элемента данных), Read, ReadBlock, ReadLine и ReadToEnd. TextWriter содержит методы типа Close, Flush, Write и WriteLine. Перегруженные методы Read читают символы из потока.

    Классы_StringReader_и_StringWriter'>Классы StringReader и StringWriter являются производными классами от классов TextReader и TextWriter соответственно. StringReader и StringWriter читают и записывают данные в символьную строку, которая сохраняется в базовом объекте StringBuilder. Конст- руктор StringWriter может принимать объект StringBuilder.

    Классы StreamReader и StreamWriter также являются производ- ными классами от классов TextReader и TextWriter. Они читают текст из объекта и записывают текст в объект Stream. Можно создать объект Stream и передать его в конструктор StreamReader или StreamWriter.
    Программа 3. Запись и чтение символьных строк в/из файл(а). Программу выполнить дважды: первый раз – чтобы создать файл, а затем второй раз – чтобы прочитать его.

    void Main() {

    FileStream fs = new FileStream( "TextTest.txt", FileMode.OpenOrCreate);

    if (fs.Length == 0) {

    Console.WriteLine("Writing Data..."); // Запись данных StreamWriter sw = new StreamWriter(fs); sw.Write(100); // Запись

    sw.WriteLine(" One Hundred"); // Сто sw.WriteLine("End of File"); // Конец Файла sw.Close();

    } else {

    String text; // Строка

    StreamReader sr = new StreamReader(fs) ; text = sr.ReadLine(); // текст

    while (text != null) { Console.WriteLine(text); text = sr.ReadLine();

    }

    sr.Close ();

    }

    fs.Close ();

    }
    Классы File и FileInfo. Класс File содержит методы для создания и

    открытия файлов, которые возвращают объекты FileStream, StreamWri- ter или StreamReader, производящие фактическое чтение и запись. Пе- регруженный метод Create возвращает объект FileStream. Метод CreateText возвращает StreamWriter. Перегруженный метод Open в за- висимости от передаваемых параметров может создавать новый файл или открывать существующий для чтения или записи. Возвращаемый объект – объект FileStream. Метод OpenText возвращает StreamReader. Метод OpenRead возвращает объект FileStream. Метод OpenWrite воз- вращает объект типа FileStream.

    Классы File и FileInfo содержат также методы копирования, удале- ния, перемещения файлов, проверки существования файла, чтения и изменения атрибутов файла (время создания; время последнего обра- щения; последнее время записи; архивный, скрытый, обычный, сис- темный или временный; сжатый, зашифрованный; только для чтения; файл или каталог).
    Программа 4. Пример использования методов класса File и FileIn-

    fo.

    void Main() {

    File.Delete("file2.txt"); // Удалить файл "file2.txt" StreamWriter sw = System.IO.File.CreateText("file.txt"); sw.Write ("Пусть каждый день твой будет светлым, "); sw.WriteLine("приятным, радостным и щедрым!"); sw.Close();

    File.Move("file.txt", "file2.txt"); // Переименование FileInfo fileInfo = new FileInfo("file2.txt"); Console.WriteLine( "File {0} is {1} bytes in length, created on

    {2}", fileInfo.FullName,fileInfo.Length, fileInfo.CreationTime); Console.WriteLine("");

    StreamReader sr = fileInfo.OpenText(); String s = sr.ReadLine();

    while (s != null) { Console.WriteLine(s); s = sr.ReadLine();

    }

    sr.Close();

    }

    Сериализация объектов. Сериализация преобразовывает объекты,

    такие как классы, структуры и массивы в поток байтов. При преобра- зовании из последовательной формы в параллельную поток байтов преобразовывается обратно в объекты.

    Сериализация может осуществляться в двух форматах: бинарном и XML-формате. Пространство имен System.Runtime. Serialization ис- пользуется для сериализации в общей системе типов. Пространство имен System.Xml.Serialization используется для сериализации XML- документов.

    Чтобы информировать каркас, что класс может быть преобразован в последовательную форму, нужно пометить класс атрибутом [Serializable]. Любое поле или свойство, которые не должны быть пре- образованы в последовательную форму, могут быть отмечены атрибу- том [NonSerialized].

    [Serializable] // Объявление сериализации объектов класса public class Personage{

    public Personage(string name, int age) { this.name = name; this.age = age;

    }

    static int wishes;

    public string name, status, wealth; int age;

    public Personage couple;

    void SaveState(){ //сериализация в бинарном формате BinaryFormatter bf = new BinaryFormatter();

    FileStream fs = new FileStream ("State.bin",FileMode.Create, FileAccess.Write);

    bf.Serialize(fs,this); fs.Close();

    }

    void BackState(ref Personage fisher){ //десериализация BinaryFormatter bf = new BinaryFormatter();

    FileStream fs = new FileStream ("State.bin",FileMode.Open, FileAc- cess.Read);

    fisher = (Personage)bf.Deserialize(fs); fs.Close();

    }

    }
    РАЗРАБОТКА МНОГООКОННОГО ПРИЛОЖЕНИЯ

    Разберем создание MDI (Multiple Document Interface, многодоку- ментный интерфейс) приложений на примере разработки программы

    «Блокнот».

    1. Создайте новое приложение (программа 5) и назовите его NotepadC#. Установите следующие свойства формы (табл. 4.1)

    Т а б л и ц а 4.1

    Свойства формы NotepadC#


    Форма, свойства

    Значение

    Name

    Frmmain

    Icon

    Путь C:\Program Files\Microsoft Visual Studio 9\Common7\VS2008ImageLibrary....

    Text

    NotepadC#

    WindowState

    Maximized




    1. Создайте меню приложения со следующими пунктами (рис. 4.1). Для этого вызовите контекстное меню, установив курсор мыши на компоненте menuStrip1, расположенной на панели невидимых компо-

    нент, и выберите пункт Edit Items. Каждый пункт главного меню имеет свое окно свойств, в котором задаются значения свойств Name и Text (рис. 4.2). В поле Text перед словом New стоит знак & – так называе- мый амперсанд, указывающий, что N должно быть подчеркнуто и бу- дет частью встроенного клавиатурного интерфейса Windows. Когда пользователь на клавиатуре нажимает клавишу Alt и затем N, выво- дится подменю New.



    Рис. 4.1. Пункты главного меню приложения NotepadC#




    Рис. 4.2. Свойства пункта меню New

    Свойства пунктов меню в приложении NotepadC# приводятся в табл. 4.2.

    Т а б л и ц а 4.2

    Пункты главного меню приложения NotepadC#


    Name

    Text

    Shortcut

    mnuFile

    &File




    mnuNew

    &New

    Ctrl+N

    mnuOpen

    &Open

    Ctrl+O

    mnuSave

    &Save

    Ctrl+S

    menuItem5

    -




    О к о н ч а н и е т а б л . 4.2

    Name

    Text

    Shortcut

    mnuExit

    &Exit

    Alt+F4

    mnuEdit

    &Edit




    mnuCut

    Cu&t

    Ctrl+X

    mnuCopy

    &Copy

    Ctrl+C

    mnuPaste

    &Paste

    Ctrl+V

    mnuDelete

    &Delete

    Del

    mnuSelectAll

    &SelectAll

    Ctrl+A

    mnuFormat

    F&ormat




    mnuFont

    Font…




    mnuColor

    Color…




    mnuWindow

    &Window




    mnuArrangeIcons

    Arrange Icons




    mnuCascade

    Cascade




    mnuTileHorizontal

    Tile Horizontal




    mnuTileVertical

    Tile Vertical




    mnuHelp

    ?




    mnuAbout

    About Programm...







    1. В MDI-приложениях главная форма содержит в себе несколько документов, каждый из которых является холстом в графических про- граммах или полем для текста в редакторах. В окне Solution Explorer щелкаем правой кнопкой на имени проекта и в появившемся контекст- ном меню выбираем Add/New Item/ Windows Form. В появившемся окне называем форму – blank.h. В нашем проекте появилась новая форма – будем называть ее дочерней. В режиме дизайна перетаскива- ем на нее элемент управления RichTextBox, размер содержимого тек- ста в нем не ограничен 64 Кб; кроме того, RichTextBox позволяет ре- дактировать цвет текста, добавлять изображения. Свойству Dock этого элемента устанавливаем значение Fill.

    Переходим в режим дизайна формы frmmain и устанавливаем свой- ству IsMdiContainer значение true. Цвет формы при этом становится темно-серым. Новые документы будут у нас появляться при нажатии пункта меню New, поэтому дважды щелкаем в этом пункте и перехо- дим в код.

    При создании нескольких документов будем называть их ДокументN, где N – номер документа. Переключаемся в код формы blank, и в классе blank объявляем поле
    1   2   3   4   5   6   7


    написать администратору сайта