Создать проект, состоящий из трех форм:
Передачу данных между формами осущесвить двумя способами.
Создаем проект 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
ЗАДАЧИ