Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Windows.Forms;
- namespace OOP_UI
- {
- public partial class fMain : Form
- {
- //список создаваемой косметики
- public List<Cosmetics> CosmeticsList = new List<Cosmetics>()
- {
- new Mascara() { Name = "«Black Ecstasy»", AmountOfItems = 50, Price = 20,
- Saturation = EyeProducts.Variants.Middle, LongLasting = EyeProducts.Variants.Middle,
- Antiallergic = false, WaterProof = true, Volumizer = false, Extension = false
- },
- new EyeShadows() { Name = "«Eyes to Kill»", AmountOfItems = 100, Price = 20,
- Saturation = EyeProducts.Variants.Middle, LongLasting = EyeProducts.Variants.Middle,
- Consistency = "undefined", Transparent = EyeShadows.Transparency.Middle, Glitter = false, Matte = false
- },
- new Powder() { Name = "«Universelle Libre»", AmountOfItems = 65, Price = 20,
- Consistency = "undefined", Matte = true, Luminous = false, Transparent = Powder.Transparency.Middle
- },
- new Concealer() { Name = "«MAC Pro Longwear»", AmountOfItems = 70, Price = 20,
- Consistency = "undefined", Matte = true,
- Density = Concealer.Variants.Middle, LongLasting = Concealer.Variants.Middle, Moisturizing = false, MaskingEffect = false
- },
- new LipPencil() { Name = "«Maybelline»", AmountOfItems = 65, Price = 20,
- LongLasting = LipProducts.Variants.Middle, Transparent = LipProducts.Variants.Middle,
- IsAutomatic = false, Soft = LipPencil.Softness.Medium
- },
- new Tint() { Name = "«Relouis»", AmountOfItems = 65, Price = 20,
- LongLasting = LipProducts.Variants.Middle, Transparent = LipProducts.Variants.Middle,
- Taste = "undefined", Brightness = Tint.BrightnessVar.Medium,
- },
- new Lipstick() { Name = "«NYX»", AmountOfItems = 65, Price = 20,
- LongLasting = LipProducts.Variants.Middle, Transparent = LipProducts.Variants.Middle,
- Density = Lipstick.Variants.Middle, HasTint = null, IsPlump = false, Shimmering = false,
- },
- };
- //список типов каждого средства
- public List<Type> TypesList = new List<Type>()
- {
- typeof(Mascara),
- typeof(EyeShadows),
- typeof(Powder),
- typeof(Concealer),
- typeof(LipPencil),
- typeof(Tint),
- typeof(Lipstick)
- };
- public int SelectedIndex;
- public fMain()
- {
- InitializeComponent();
- }
- //загрузка формы
- private void FMain_Load(object sender, EventArgs e)
- {
- lvMainForm.MultiSelect = false;
- SelectedIndex = -1;
- foreach (var type in TypesList)
- cbTypes.Items.Add(type.ToString().Substring(7));
- cbTypes.SelectedIndex = 0;
- cbTypes.DropDownStyle = ComboBoxStyle.DropDownList;
- Redraw(lvMainForm, CosmeticsList);
- }
- //перерисовка списка
- public void Redraw(ListView listView, List<Cosmetics> items)
- {
- listView.Clear();
- for (int i = 0; i < items.Count; i++)
- {
- var LVItem = new ListViewItem();
- Type itemType = items[i].GetType();
- object Name;
- try
- {
- var nameField = items[i].GetType().GetField("Name");
- Name = nameField.GetValue(items[i]);
- }
- catch
- {
- Name = "";
- }
- LVItem.Text = itemType.Name + " " + Name;
- listView.Items.Add(LVItem);
- }
- }
- //создание нового средства
- private void butCreate_Click(object sender, EventArgs e)
- {
- Cosmetics newObject = (Cosmetics) Activator.CreateInstance(TypesList[cbTypes.SelectedIndex]);
- CosmeticsList.Add(newObject);
- Form EForm = new ItemForm(newObject, CosmeticsList);
- EForm.StartPosition = FormStartPosition.CenterScreen;
- EForm.ShowDialog();
- EForm.Dispose();
- Redraw(lvMainForm, CosmeticsList);
- }
- //редактирование выбранного средства
- private void butEdit_Click(object sender, EventArgs e)
- {
- //получаем индекc выделенного пункта
- int itemNum;
- if (lvMainForm.SelectedIndices.Count != 0)
- itemNum = lvMainForm.SelectedIndices[0];
- else
- return;
- //Создаем форму редактирования обьекта
- Form EForm = new ItemForm(CosmeticsList[itemNum], CosmeticsList);
- EForm.StartPosition = FormStartPosition.CenterScreen;
- EForm.ShowDialog();
- EForm.Dispose();
- Redraw(lvMainForm, CosmeticsList);
- }
- private void Delete_Action(Cosmetics DelObject, List<Cosmetics> ObjectList)
- {
- //список объектов которые могут использовать удаляемый обьект
- var ownerList = ObjectList.Where(item => (item.GetType().GetFields().Where(field => (field.FieldType == DelObject.GetType()))).ToList().Count > 0);
- foreach (var owner in ownerList)
- {
- foreach (var field in owner.GetType().GetFields().Where(field => (field.FieldType == DelObject.GetType())).ToList())
- {
- if (field.GetValue(owner) != null)
- {
- if (field.GetValue(owner).Equals(DelObject))
- {
- field.SetValue(owner, null);
- }
- }
- }
- }
- //Непосредственное удаление обьекта
- ObjectList.Remove(DelObject);
- }
- //удаление выбранного средства
- private void butDelete_Click(object sender, EventArgs e)
- {
- if ((lvMainForm.SelectedIndices.Count != 0) && (lvMainForm.SelectedIndices[0] < CosmeticsList.Count))
- {
- int itemNum = lvMainForm.SelectedIndices[0];
- Delete_Action(CosmeticsList[itemNum], CosmeticsList);
- }
- Redraw(lvMainForm, CosmeticsList);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement