4.9-расм. Дастур интерфейси
Қуйидаги 4.9-листингда ушбу дастурнинг коди келтирилган:
4.9 листинг. Матнли файлни чоп қилиш
|
// Дастур матнли файлни стандарт мулокот ойнаси оркали укиб олиб,
// унинг мазмунини матнли майдонга факат укиш (ReadOnly) учун очади
// ва уни принтерга чоп килади
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TxtPrint
{
public partial class Form1 : Form
{
System.IO.StreamReader Reader;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "Матнли файлни очиш ва чоп этиш";
textBox1.Multiline = true;
textBox1.Clear();
textBox1.Size = new Size(268, 112);
textBox1.ScrollBars = ScrollBars.Vertical;
textBox1.ReadOnly = true;
// Файл укиб тулик юклангунча менюнинг,
// "Печать..." кисми куринмаслиги лозим.
печатьToolStripMenuItem.Visible = false;
openFileDialog1.FileName = null;
}
private void открытьToolStripMenuItem_Click(
Object sender, EventArgs e)
{
// Менюнинг "Очиш" кисми танланганда:
openFileDialog1.Filter =
"(*.txt)|*.txt|All files (*.*)|*.* матнли файллар";
openFileDialog1.ShowDialog();
if (openFileDialog1.FileName == null) return;
try
{
// Файлдан маълумотларни укиб олиш учун StreamReader объекти
Reader = new System.IO.StreamReader(
openFileDialog1.FileName,
System.Text.Encoding.GetEncoding(1251));
// - Win1251 кодировкадан фойдаланиш
textBox1.Text = Reader.ReadToEnd();
Reader.Close();
печатьToolStripMenuItem.Visible = true;
}
catch (System.IO.FileNotFoundException Holat)
{
MessageBox.Show(Holat.Message +
"\nБундай файл мавжуд эмас", "Хатолик",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
catch (Exception Holat)
{
// Бошка турдаги хатолик:
MessageBox.Show(Holat.Message, "Хатолик",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
private void печатьToolStripMenuItem_Click(object sender, EventArgs e)
{
// "Чоп этиш"
try
{
Reader = new System.IO.StreamReader(
openFileDialog1.FileName,
System.Text.Encoding.GetEncoding(1251));
// - Win1251 кодировкадан фойдаланиш
try
{
printDocument1.Print();
}
finally
{
Reader.Close();
}
}
catch (Exception Holat)
{
MessageBox.Show(Holat.Message);
}
}
private void printDocument1_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
Single SatrSoni = 0.0F;
Single Y = 0;
var ChapTomon = e.MarginBounds.Left;
var YuqoriTomon = e.MarginBounds.Top;
var Satr = String.Empty;
var Shrift = new Font("Times New Roman", 12.0F);
// Битта сахифадаги сатрлар сонини аниклаш
SatrSoni = e.MarginBounds.Height /
Shrift.GetHeight(e.Graphics);
// Хар бир сатрни чоп этиш
var i = 0; // - сатрлар сони
while (i < SatrSoni)
{
Satr = Reader.ReadLine();
if (Satr == null) break; // циклдан чикиш
Y = YuqoriTomon + i *
Shrift.GetHeight(e.Graphics);
// Сатрни чоп этиш
e.Graphics.DrawString(Satr, Shrift, Brushes.Black,
ChapTomon, Y, new StringFormat());
i = i + 1; // ёки i += 1
}
// Кейинги сахифани чоп этиш
if (Satr != null) e.HasMorePages = true;
else e.HasMorePages = false;
}
private void выходToolStripMenuItem_Click(
object sender, EventArgs e)
{
// Дастурдан чикиш
this.Close();
}
}
}
|
Ушбу дастурда форма ишга тушаётганда FormLoad методида фойдаланувчига матнли майдонда қиймат ўзгартирилишига йўл қўймаймиз. Шунингдек, менюдаги чоп этиш қисмини кўринмайдиган қилиб қўямиз.
Do'stlaringiz bilan baham: |