Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Технології та бібліотеки
· Бібліотека zlib.net.dll
· Середовище розробки Visual Studio 2010
· Мова C#
· Framework 3.5
Технічне завдання. Архіватор повинен вміти:
· стискати файли і каталоги
· збирати образ без стиснення
· шифрувати дані (зі стисканням та без)
· виключати вказані шляхи
· видаляти файли після їх стискання
· розпаковувати образ
Створюємо головну форму програми на якій буде розміщено дві кнопки «Зняти образ» і «Розпаковка»:
namespace std
{
public partial class MainForm: Form
{
public MainForm()
{
InitializeComponent();
}
private void bCompress_Click(object sender, EventArgs e)
{
new CompressForm().ShowDialog();
}
private void bDecompress_Click(object sender, EventArgs e)
{
new DecompressForm().ShowDialog();
}
private void MainForm_Load(object sender, EventArgs e)
{
}
}
}
Рисунок 2.6.1 – Головна форма
Далі створимо форму на якій розмістимо кнопки («Каталог», «Файл», «Зняти Образ») 2 елемента check («Без стиснення» та «Видалити джерело») та поле для редагування тексту для пароля.
namespace std
{
public partial class CompressForm: Form
{
ArchiveProvider compressor = new ArchiveProvider();
public CompressForm()
{
InitializeComponent();
compressor.ProcessMessages += compressor_ProcessMessages;
compressor.ErrorProcessing += ProcessingFileError;
}
void compressor_ProcessMessages(string message)
{
lbLog.Items.Add(message);
}
OperationErrorAction ProcessingFileError(string caption, string message)
{
using (AscActionByError form = new AscActionByError(caption, message))
{
form.ShowDialog();
return form.Result;
}
}
private void button1_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
label1.Text = fbd.SelectedPath;
}
}
}
private void bCompress_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
CompressorOption option = new CompressorOption()
{
Password = tbPassword.Text,
WithoutCompress = cbNoCompression.Checked,
RemoveSource = cbRemoveSource.Checked,
Output = sfd.FileName
};
foreach (string line in lbIncludes.Items)
option.IncludePath.Add(line);
foreach (string line in lbExclude.Items)
option.ExcludePath.Add(line);
compressor.Compress(option);
}
}
}
private void bInclude_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
lbIncludes.Items.Add(fbd.SelectedPath);
}
}
private void bExcludeFolder_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
lbExclude.Items.Add(fbd.SelectedPath);
}
}
private void bIncludeFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
lbIncludes.Items.Add(ofd.FileName);
}
}
}
private void bExcludeFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
lbExclude.Items.Add(ofd.FileName);
}
}
}
}
}
Рисунок 2.6.2 – Форма зняття образів
Наступним кроком є створення форми для розпакування образів у вказану папку. На формі розміщуємо такі компоненти як: два поля для введення тексту (TextEdit1 і TextEdit2), дві кнопки (Button1 i Button2) та Label1 з назвою Пароль.
namespace std
{
public partial class DecompressForm: Form
{
ArchiveProvider decompressor = new ArchiveProvider();
public DecompressForm()
{
InitializeComponent();
}
private void bArcView_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
tbArchive.Text = ofd.FileName;
}
}
}
private void bDecompress_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
decompressor.Decompress(tbArchive.Text, fbd.SelectedPath, tbPassword.Text);
}
}
}
private void DecompressForm_Load(object sender, EventArgs e)
{
}
}
}
Рисунок 2.6.3 – Форма для розпаковки образів у вказану папку
І на останок створимо форму на випадок виникнення помилок. Розмістимо на ній 4 кнопки (Button1, Button2, Button3, Button4) «Пропустити все», «Пропустити», «Перерваги», «Повторити». Розмістимо TextBox для виведення помилок.
namespace std
{
public partial class AscActionByError: Form
{
public OperationErrorAction Result = 0;
public AscActionByError(string caption, string text)
{
InitializeComponent();
lText.Text = caption;
tbMsg.Text = text;
}
private void button1_Click(object sender, EventArgs e)
{
Result = OperationErrorAction.Abort;
Close();
}
private void button2_Click(object sender, EventArgs e)
{
Result = OperationErrorAction.Ignore;
Close();
}
private void button3_Click(object sender, EventArgs e)
{
Result = OperationErrorAction.Replay;
Close();
}
private void bIgnoreAll_Click(object sender, EventArgs e)
{
Result = OperationErrorAction.IgnoreAll;
Close();
}
}
}
Рисунок 2.6.4 – Форма звіту про помилки
Дата публикования: 2015-06-12; Прочитано: 4931 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!