Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodicheskoe_posobie_VGKS_po_S.docx
Скачиваний:
49
Добавлен:
13.02.2016
Размер:
433.75 Кб
Скачать

Лабораторная работа 12 Работа с файлами. Всплывающая подсказка

Цель работы.

Изучить формирование программ с использованием файлов. Научиться создавать формы с использованием всплывающей подсказки.

План занятия.

Изучить теоретические сведения формирования программы на С#.

По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.

Краткие теоретические сведения.

Текстовые файлы.

В них информация хранится в виде обычного текста.

Запись в текстовый файл:

  1. Открыть файл на запись.

StreamWriter f = new StreamWriter (a.txt, false, Encoding.GetEncoding( 1251));

  1. Запись в файл методами Write или Writeline

f.Writeline(“a={0} b={1},a,b);

указатель при этом устанавливается на начало следующей строки

  1. Закрыть файл

f.close();

Чтение из текстового файла:

1)открыть файл на чтение

StreamReader f=new StreamReader(“a.txt”,Encoding.GetEncoding(1251));

2) выполнить операции чтения

String S;

S= f.ReadLine(); // чтение очередной строки

Указатель при этом устанавливается на начало очередной строки

S= f.ReadToEnd(); – считать с текущей позиции весь текст до конца файла

S=f.ReadBlock(10); – считать с текущей позиции 10 символов, указатель устанавливается на новое место

S.= f.Peek(); – считать символ на указателе , указать при этом остается на том же месте

3) закрыть файл

f.Close();

Поток байтов.

Тип файла FileStream

FileStream f=new FileStream(“a.txt”, mode, режим);

Режим:

FileAccess.Read – только чтение,

FileAccess.Write –только запись,

FileAccess.ReadWrite –чтение\запись.

Mode:

FileMode.Create – новый файл (если такой файл есть, то он стирается),

FileMode.Open – открыть существующий файл,

FileMode.OpenOrCreate – тоже, если файла нет, то он создается,

FileMode.Append –тоже , только указатель устанавливается в конец файла.

Операции над файлами потока байтов.

f.Read(x,0,20) – чтение с текущей позиции в файле,где 0 и 20 начальный и конечный индексы массива x,

f.Read(y) – чтение байта,

f.Seak(5,4); – указатель устанавливается на 5-й символ начиная с 4-го,

f.Seek(5,SeekOrigin.Begin); – на 5-й символ с начала,

a=f.ReadByte(); – прочитать байт на текущей позиции,

f.Close –закрытие файла.

Асинхронный ввод-вывод.

Предназначен для параллельного процесса ввода-вывода и одновременно выполнение других частей программы. Асинхронно можно работать с любыми файлами.

Пример программы

byte[] buf=new byte[100000]

FileStream f=new FileStream(“a.txt”, FileAccess.Read, FileShare.Read, buf.Lenght, true); – true указывает на признак асинхронного ввода-выводы

AsyncCallback callback=new AsyncCallback(fff);

f.BeginRead(buf,0,buf.Lenght,callback,null);

// текст программы бeз использовании buf

// место, где начинает использоваться buf

while(!KodRead){} // до тех пор пока ввод KodRead не будет установлен бесконечный цикл

Выше приведенного текста необходимо поместить установку флага KodRead=false и определить обработчик, выполнение которого осуществляется после полного процесса чтения:

bool KodRead=false;

int Rbutes;

public void fff (IAsyncResult e) //стандартно!

{

Rbutes=f.EndRead (e);

KodRead=true;

}

После окончания процесса полного ввода выполнится процедура fff, которая и устанавливает флаг KodRead. Можно также определить и число считанных байтов Rbutes.

Порядок выполнения работы.

Создайте форму:

Воспроизведите код программы.

//FORM

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private void button1_Click(object sender, EventArgs e)

{

double x, y; string st;

x = Convert.ToDouble(textBox1.Text);

y = Math.Sin(x);

st = String.Format("{0,4:0.##}",y);

textBox2.Text = st;

}

private void Form1_Load_1(object sender, System.EventArgs e)

{

ToolTip toolTip2 = new ToolTip();

toolTip2.AutoPopDelay = 5000;

toolTip2.InitialDelay = 100;

toolTip2.ReshowDelay = 50;

toolTip2.BackColor = Color.Azure;

toolTip2.ShowAlways = true;

toolTip2.SetToolTip(this.button1, " ");

toolTip2.ToolTipTitle = "4444444";

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

Point p = pictureBox1.Location; // позиция левого верхнего угла pictureBox1

Point p1 = this.Location; // позиция левого верхнего угла формы

// e.X и e.Y погиция курсора в pictureBox1

int XX, YY;

XX = e.X + p.X + p1.X; YY = e.Y + p.Y + p1.Y;

toolTip1.ToolTipTitle = Convert.ToString(XX) + "; " + Convert.ToString(YY);

toolTip1.SetToolTip(this.pictureBox1, " ");

}

}}

Создайте форму:

//ПОДСКАЗКА С ОТОБРАЖЕНИЕМ Color

Воспроизведите код программы.

//FORM

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private void button1_Click(object sender, EventArgs e)

{

double x, y; string st;

x = Convert.ToDouble(textBox1.Text);

y = Math.Sin(x);

st = String.Format("{0,4:0.##}",y);

textBox2.Text = st;

}

private void Form1_Load_1(object sender, System.EventArgs e)

{

// Create the ToolTip and associate with the Form container.

ToolTip toolTip2 = new ToolTip();

// Set up the delays for the ToolTip.

toolTip2.AutoPopDelay = 5000;

toolTip2.InitialDelay = 100;

toolTip2.ReshowDelay = 50;

toolTip2.BackColor = Color.Azure;

// Force the ToolTip text to be displayed whether or not the form is active.

toolTip2.ShowAlways = true;

// Set up the ToolTip text for the Button and Checkbox.

toolTip2.SetToolTip(this.button1, " ");

toolTip2.ToolTipTitle = "4444444";

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

Point p = pictureBox1.Location; // позиция левого верхнего угла pictureBox1

Point p1 = this.Location; // позиция левого верхнего угла формы

// e.X и e.Y погиция курсора в pictureBox1

int XX, YY;

XX = e.X + p.X + p1.X; YY = e.Y + p.Y + p1.Y;

Bitmap bmp=new Bitmap(1,1);

using (Graphics g = Graphics.FromImage(bmp))

{ g.CopyFromScreen(XX, YY, 0, 0,new Size(1,1)); }

Color color = bmp.GetPixel(0,0);

string SS;

SS=Convert.ToString(color);

toolTip1.ToolTipTitle = SS;

toolTip1.SetToolTip(this.pictureBox1, " ");

}

}}

Индивидуальное задание.

  1. Доработайте вторую программу, что бы во всплывающей подсказке выводились значения из текстовых элементов виде: x=4.5; y=7.2;

  2. С использование файла типа поток байтов сформируйте строку текста. В каждом слове замените первые прописные буквы на заглавные. Результат выведите в текстовый файл.

Содержание отчета.

Представить отлаженные программы по индивидуальному заданию.

Литература.

Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.246-271

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