Створити проект, що складається з трьох форм:
Передачу даних між формами здійсніть двома способами.
Створюємо проект WFApp1. Додаємо два класи User і Reg.
public class User { public string name; public string login; public string password; public User(string n, string l, string p) { this.name = n; this.login = l; this.password = p; } }
Другий клас статичний для обміну даними між формами.
List Являє строго типізований список об'єктів, доступних за індексом. Підтримує методи для пошуку за списком, виконання сортування і інших операцій зі списками.
Проект містить три форми.
Головна форма містить компоненти:
Клас mainForm містить методи обробки подій.
При завантаженні форми всі компоненти, крім кнопки вхід не активні. І заповнюємо список зареєстрованих користувачів users типу List При натисканні на кнопку вхід поля введення логіна і пароля стають доступними для введення.
При натисканні на кнопку авторизація перевіряється наявність реєстрації, якщо такого користувача немає в списку, стає активною кнопка реєстрація, при натисканні на неї з'являється форма реєстрації, а головна форма ховається. При натисканні на кнопку авторизація перевіряється наявність реєстрації, якщо такого користувача немає в списку, стає активною кнопка реєстрація. Якщо користувач є в списку реєстрації з'являється форма замовлення репродукцій. Форма реєстрації ховається Форма реєстрації користувача:
Клас Form2 містить методи обробки подій.
Форма замовлення репродукцій:
Клас Form3 містить методи обробки подій.
FolderBrowserDialog - це звичайна форма, а значить метод ShowDialog буде повертати перерахування DialogResult. У нашому випадку якщо користувач у вікні вибору папки, натисне кнопку «Скасування», то метод поверне DialogResult.Cancel, якщо ж папку виберуть і натиснуть «ОК», то DialogResult.OK.
Таким чином наша умова, показує нам обраний шлях тільки тоді, коли ми вибрали потрібну директорію і натиснули кнопку «ОК» .На замовчуванням вікно FolderBrowserDialog дозволяє створити нову папку «нальоту». Для того щоб прибрати цю можливість, перед викликом методу ShowDialog необхідно задати властивість ShowNewFolderButton = false. Об'єкт Chart використовують для створення графіків і діаграм.
Для реалізації даного завдання необхідно створити головне меню (об'єкт типу MenuStrip) з командами: завершити роботу, табулювати функцію, очистити поля виведення результатів і контекстне меню (ContextMenuStrip), яке містить команду очищення поля виведення результатів. Результат табулирования вивести в многострочное поле редагування (об'єкт типу RichTextBox). Передбачити можливість виведення результатів на екран, файл, масив. Спосіб виведення результатів реалізувати за допомогою прапорців (об'єкти типу CheckBox), розташованих на панелі групи об'єктів (GroupBox)
Послідовність виконання:
Для налаштування властивостей графіка необхідно вибрати пункт Властивості контекстного меню компонента Chart1.
Код обробників подій.
Результат:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WFApp1
{
public static class Reg
{
public static User curent;
public static List
private void mainForm_Load(object sender, EventArgs e)
{
this.textBox1.Enabled = false;
this.textBox2.Enabled = false;
this.button1.Enabled = false;
this.button2.Enabled = false;
User u1 = new User("Ivanov","admin","admin");
Reg.users.Add(u1);//Добавляет объект в конец очереди List
private void BeginBtn_Click(object sender, EventArgs e)
{
this.textBox1.Enabled = true;
this.textBox2.Enabled = true;
this.button1.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
this.button2.Enabled = false;
Form2 f2 = new Form2();
f2.Show();
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (User ingredient in Reg.users)
{
if (ingredient.login.Equals(textBox1.Text))
{
if (ingredient.password.Equals(textBox2.Text))
{
this.Hide();Reg.curent = new User(ingredient.name,ingredient.login,ingredient.password);
Form3 f3 = new Form3();
f3.Show();break;
}
else
{
MessageBox.Show("Не правильно введен пароль");break;
}
}
}
this.textBox1.Enabled = false;
this.textBox2.Enabled = false;
this.button1.Enabled = false;
this.button2.Enabled = true;
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WFApp1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (this.textBox3.Text.Equals(this.textBox4.Text))
{
User us = new User(this.textBox1.Text, this.textBox2.Text, this.textBox3.Text);
Reg.users.Add(us);
}
else
MessageBox.Show("Не совпадает повторный пароль!!!");
mainForm f1 = new mainForm();
f1.Show(); this.Close();
}
}
}
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
namespace WFApp1
{
public partial class Form3 : Form
{
private int pbw, pbh;
int sek = 0;
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
pbw = pictureBox1.Width;
pbh = pictureBox1.Height;
listBox1.Sorted = true;
FillListBox(Application.StartupPath + "\\");
this.Text = "Зашел пользователь " + Reg.curent.name + " login: " + Reg.curent.login;
timer1.Start();
}
private Boolean FillListBox(String aPath)
{
DirectoryInfo di = new DirectoryInfo(aPath);
FileInfo[] fi = di.GetFiles("*.jpg");
listBox1.Items.Clear();
foreach (FileInfo fc in fi)
{
listBox1.Items.Add(fc.Name);
}
label7.Text = aPath;
if (fi.Length == 0) return false;
else
listBox1.SelectedIndex = 0;
return true;
}
private void timer1_Tick(object sender, EventArgs e)
{
sek++;this.label6.Text = sek.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
this.timer1.Stop();
this.label5.Text =(Convert.ToDouble(this.textBox1.Text) * Convert.ToDouble(this.textBox2.Text) - Convert.ToDouble(this.textBox3.Text)).ToString();
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
String tx = " ";
char c = e.KeyChar;
tx = (sender as TextBox).Text;
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
if (!((e.KeyChar.ToString() == ",") && (tx.IndexOf(",") == -1))) e.Handled = true;
}
private void button3_Click(object sender, EventArgs e)
{
FolderBrowserDialog fb = new FolderBrowserDialog();
fb.Description = "Выберите папку";
fb.ShowNewFolderButton = false;
if (fb.ShowDialog() == DialogResult.OK)
if (!FillListBox(fb.SelectedPath + "\\")) pictureBox1.Image = null;
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Double mh, mw;
pictureBox1.Image = new Bitmap(label7.Text + listBox1.SelectedItem.ToString());
if ((pictureBox1.Image.Width > pbw) || (pictureBox1.Image.Height > pbh))
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
mh = (double)pbh / (double)pictureBox1.Image.Height;
mw = (double)pbw / (double)pictureBox1.Image.Width;
if (mh < mw)
{
pictureBox1.Width = Convert.ToInt16(pictureBox1.Image.Width * mh);
pictureBox1.Height = pbh;
}
else
{
pictureBox1.Width = pbw;
pictureBox1.Height = Convert.ToInt16(pictureBox1.Image.Height * mw);
}
}
else
if (pictureBox1.SizeMode == PictureBoxSizeMode.StretchImage)
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
}
}
}
2 спосіб передачі даних для всіх трьох форм:
Головна форма:
Форма реєстрації користувача:
Форма замовлення репродукцій:
Результат:
ПРИКЛАД 2
ЗАВДАННЯ