Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Кафедра інформаційних
систем та мереж
Лабораторна робота №2
на тему:
«Побудова інтерфейсу з невидимими елементами»
Львів-2010
Мета:
Набуття навичок із використання в програмах елементів керування Label і TextBox для відображення та редагування багаторядкового тексту.
Хід виконання роботи:
Запускаю середовище програмування Visual Studio 2010.
Відкриваю програму до попередньої лабораторної роботи.
Створюю нові форми, налаштовую зв'язки між ними.
Організовую захист редагування довідки паролем.
Додаю до програми головне випадаюче меню.
Організовую реагування програми на «гарячі клавіші».
Тестую програму.
Оформляю звіт до лабораторної роботи.
Завдання:
Програму, розроблену під час виконання лабораторної роботи № 1, доповнити довідкою про розробника, яка повинна включати не менше тридцяти слів. Ця програма повинна забезпечувати:
відображення довідки лише за побажанням користувача;
приховання довідки після її перегляду;
можливість корекції довідки під час виконання програми;
засоби, які використовуються при корекції довідки та її приховання повинні бути доступними лише під час перегляду довідки.
Код програми:
Form1.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Lab1_MZKIT
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static string helpText = "Лабораторна робота виконана в середовищі програмування Visual Studio .Net 2010 на мові програмування C#. \r\nЦе дає змогу використовувати всі можливості платформи .Net. \r\nВ даній роботі використовувалися елементи платформи, версії 2.0\r\nДля редагування цього поля натисніть клавішу \"Редагувати\" та введіть пароль.";
protected override void OnKeyDown(KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.F1:
help();
e.Handled = true;
break;
case Keys.Escape:
exit();
e.Handled = true;
break;
case Keys.Enter:
calculate();
e.Handled = true;
break;
}
}
private void txtbKeyDown(object sender, KeyEventArgs e)
{
char c = (char)e.KeyCode;
if (!char.IsDigit(c) && !char.IsSeparator(c) && !char.IsControl(c))
{
e.Handled = true;
}
}
private void txtbKeyPressDoubleFilter(object sender, KeyPressEventArgs e)
{
char c = (char)e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c))
{
if ((c!='.') || (c=='.' && (((TextBox)sender).Text.IndexOf('.')!=-1 || ((TextBox)sender).Text.Length==0)))
e.Handled = true;
}
}
private void btnExit_Click(object sender, EventArgs e)
{
exit();
}
private void exit()
{
Application.Exit();
}
private void txtbKeyPressIntFilter(object sender, KeyPressEventArgs e)
{
char c = e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c))
e.Handled = true;
}
private double binom(double a, double b, int n)
{
double s=0;
for (int i = 0; i <= n; i++)
s += combination(i, n) * Math.Pow(a, n - i) * Math.Pow(-b, i);
return s;
}
private int fact(int n)
{
int f = 1;
for (int i = 2; i <= n; i++)
f *= i;
return f;
}
private int combination(int i, int k)
{
return fact(k) / (fact(i) * fact(k - i));
}
private void btnCalculate_Click(object sender, EventArgs e)
{
calculate();
}
private void calculate()
{
double a = 0, b = 0;
int n = 0;
try
{
a = double.Parse(txtbA.Text);
}
catch
{
MessageBox.Show("Невірно введено дійсне А... Повторіть введення...", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtbA.Focus();
return;
}
try
{ b = double.Parse(txtbB.Text); }
catch
{
MessageBox.Show("Невірно введено дійсне B... Повторіть введення...", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtbB.Focus();
return;
}
try
{
n = int.Parse(txtbN.Text);
}
catch
{
MessageBox.Show("Невірно введено ціле N... Повторіть введення...", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtbN.Focus();
return;
}
txtbResult.Text = binom(a, b, n).ToString();
}
private void вихідToolStripMenuItem_Click(object sender, EventArgs e)
{
exit();
}
private void обчислитиToolStripMenuItem_Click(object sender, EventArgs e)
{
calculate();
}
private void показатиДовідкуToolStripMenuItem_Click(object sender, EventArgs e)
{
help();
}
private void help()
{
frmHelp f = new frmHelp();
f.Show();
}
}
}
frmHelp.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
namespace Lab1_MZKIT
{
partial class frmHelp : Form
{
public frmHelp()
{
InitializeComponent();
textBoxDescription.Text = Form1.helpText;
}
private void button1_Click(object sender, EventArgs e)
{
frmPasswordDialog f = new frmPasswordDialog();
if (f.CheckPassword())
{
textBoxDescription.ReadOnly = false;
button2.Visible = true;
button1.Visible = false;
okButton.Visible = false;
textBoxDescription.Focus();
}
}
private void okButton_Click(object sender, EventArgs e)
{
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
textBoxDescription.ReadOnly = true;
button2.Visible = false;
button1.Visible = true;
okButton.Visible = true;
Form1.helpText = textBoxDescription.Text;
}
}
}
frmPasswordDialog.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Lab1_MZKIT
{
public partial class frmPasswordDialog : Form
{
private string password = "1111";
private bool isPasswordCorrect = false;
public frmPasswordDialog()
{
InitializeComponent();
}
public bool CheckPassword()
{
this.ShowDialog();
return isPasswordCorrect;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == password)
{
isPasswordCorrect = true;
this.Close();
}
else
{
DialogResult dr = MessageBox.Show("Невірний пароль", "Помилка", MessageBoxButtons.RetryCancel, MessageBoxIcon.Stop);
if (dr == System.Windows.Forms.DialogResult.Cancel)
this.Close();
}
}
private void frmPasswordDialog_Load(object sender, EventArgs e)
{
textBox1.Focus();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((char)e.KeyChar == (char)Keys.Enter)
button1_Click(this, EventArgs.Empty);
}
}
}
Результати роботи програми:
Висновки:
Я набув навичок із використання в програмах елементів керування Label і TextBox для відображення та редагування багаторядкового тексту, створення довідки та захищення редагування даних паролем.