diff --git a/Trolleybus/Trolleybus/EntitySmallTrolleybus.cs b/Trolleybus/Trolleybus/EntitySmallTrolleybus.cs index 796bace..5f39c2f 100644 --- a/Trolleybus/Trolleybus/EntitySmallTrolleybus.cs +++ b/Trolleybus/Trolleybus/EntitySmallTrolleybus.cs @@ -12,16 +12,16 @@ namespace Trolleybus /// /// Дополнительный цвет /// - public Color DopColor { get; private set; } + public Color DopColor { get; set; } /// /// Признак наличия обвеса /// - public bool BodyKit { get; private set; } + public bool BodyKit { get; set; } /// /// Признак наличия гоночной полосы /// - public bool Horns { get; private set; } - public bool Battary { get; private set; } + public bool Horns { get; set; } + public bool Battary { get; set; } /// /// Инициализация свойств /// diff --git a/Trolleybus/Trolleybus/EntityTrolleybus.cs b/Trolleybus/Trolleybus/EntityTrolleybus.cs index 10bb18d..405d7f5 100644 --- a/Trolleybus/Trolleybus/EntityTrolleybus.cs +++ b/Trolleybus/Trolleybus/EntityTrolleybus.cs @@ -23,7 +23,7 @@ namespace Trolleybus /// /// Цвет кузова /// - public Color BodyColor { get; private set; } + public Color BodyColor { get; set; } /// /// Шаг перемещения троллейбуса /// diff --git a/Trolleybus/Trolleybus/FormMapWithSetTrolleybus.cs b/Trolleybus/Trolleybus/FormMapWithSetTrolleybus.cs index 5680c38..091f483 100644 --- a/Trolleybus/Trolleybus/FormMapWithSetTrolleybus.cs +++ b/Trolleybus/Trolleybus/FormMapWithSetTrolleybus.cs @@ -107,12 +107,34 @@ namespace Trolleybus _mapTrolleybusCollectionGeneric = null; } } - private void ButtonAddTrolleybus_Click(object sender, EventArgs e) + private void AddTrolleybus(DrawingTrolleybus trolleybus) { if (listBoxMaps.SelectedIndex == -1) { return; } + if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObjectTrolleybus(trolleybus) != -1) + { + MessageBox.Show("Объект добавлен"); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + } + else + { + MessageBox.Show("Не удалось добавить объект"); + } + + } + + private void ButtonAddTrolleybus_Click(object sender, EventArgs e) + { + var formTrolleybusConfig = new FormTrolleybusConfig(); + + formTrolleybusConfig.AddEvent(AddTrolleybus); + formTrolleybusConfig.Show(); + /*if (listBoxMaps.SelectedIndex == -1) + { + return; + } Form1 form = new(); if (form.ShowDialog() == DialogResult.OK) { @@ -126,7 +148,7 @@ namespace Trolleybus { MessageBox.Show("Не удалось добавить объект"); } - } + }*/ } /// /// Удаление объекта diff --git a/Trolleybus/Trolleybus/FormTrolleybusConfig.Designer.cs b/Trolleybus/Trolleybus/FormTrolleybusConfig.Designer.cs index 60fed2c..f027b62 100644 --- a/Trolleybus/Trolleybus/FormTrolleybusConfig.Designer.cs +++ b/Trolleybus/Trolleybus/FormTrolleybusConfig.Designer.cs @@ -29,8 +29,9 @@ private void InitializeComponent() { this.groupBoxConfig = new System.Windows.Forms.GroupBox(); + this.checkBoxBodyKit = new System.Windows.Forms.CheckBox(); this.labelModifiedObject = new System.Windows.Forms.Label(); - this.lebelSimpleObject = new System.Windows.Forms.Label(); + this.labelSimpleObject = new System.Windows.Forms.Label(); this.groupBoxColors = new System.Windows.Forms.GroupBox(); this.panelPurple = new System.Windows.Forms.Panel(); this.panelBlack = new System.Windows.Forms.Panel(); @@ -50,9 +51,8 @@ this.panelObject = new System.Windows.Forms.Panel(); this.labelDopColor = new System.Windows.Forms.Label(); this.labelColor = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.button2 = new System.Windows.Forms.Button(); - this.checkBoxBodyKit = new System.Windows.Forms.CheckBox(); + this.buttonOk = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); this.groupBoxConfig.SuspendLayout(); this.groupBoxColors.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWeight)).BeginInit(); @@ -65,7 +65,7 @@ // this.groupBoxConfig.Controls.Add(this.checkBoxBodyKit); this.groupBoxConfig.Controls.Add(this.labelModifiedObject); - this.groupBoxConfig.Controls.Add(this.lebelSimpleObject); + this.groupBoxConfig.Controls.Add(this.labelSimpleObject); this.groupBoxConfig.Controls.Add(this.groupBoxColors); this.groupBoxConfig.Controls.Add(this.checkBoxBattary); this.groupBoxConfig.Controls.Add(this.checkBoxHorns); @@ -80,6 +80,16 @@ this.groupBoxConfig.TabStop = false; this.groupBoxConfig.Text = "Параметры"; // + // checkBoxBodyKit + // + this.checkBoxBodyKit.AutoSize = true; + this.checkBoxBodyKit.Location = new System.Drawing.Point(11, 224); + this.checkBoxBodyKit.Name = "checkBoxBodyKit"; + this.checkBoxBodyKit.Size = new System.Drawing.Size(89, 24); + this.checkBoxBodyKit.TabIndex = 10; + this.checkBoxBodyKit.Text = "BodyKit"; + this.checkBoxBodyKit.UseVisualStyleBackColor = true; + // // labelModifiedObject // this.labelModifiedObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -88,16 +98,19 @@ this.labelModifiedObject.Size = new System.Drawing.Size(130, 34); this.labelModifiedObject.TabIndex = 9; this.labelModifiedObject.Text = "Продвинутый"; + this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.labelObject_Mouse_Down); // - // lebelSimpleObject + // labelSimpleObject // - this.lebelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.lebelSimpleObject.Location = new System.Drawing.Point(336, 214); - this.lebelSimpleObject.Name = "lebelSimpleObject"; - this.lebelSimpleObject.Size = new System.Drawing.Size(100, 34); - this.lebelSimpleObject.TabIndex = 8; - this.lebelSimpleObject.Text = "Простой"; - this.lebelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.labelSimpleObject_Mouse_Down); + this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelSimpleObject.Location = new System.Drawing.Point(336, 214); + this.labelSimpleObject.Name = "labelSimpleObject"; + this.labelSimpleObject.Size = new System.Drawing.Size(100, 34); + this.labelSimpleObject.TabIndex = 8; + this.labelSimpleObject.Text = "Простой"; + this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.labelObject_Mouse_Down); // // groupBoxColors // @@ -115,7 +128,6 @@ this.groupBoxColors.TabIndex = 7; this.groupBoxColors.TabStop = false; this.groupBoxColors.Text = "Цвета"; - this.groupBoxColors.Enter += new System.EventHandler(this.groupBox2_Enter); // // panelPurple // @@ -124,6 +136,7 @@ this.panelPurple.Name = "panelPurple"; this.panelPurple.Size = new System.Drawing.Size(62, 49); this.panelPurple.TabIndex = 2; + this.panelPurple.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelBlack // @@ -132,6 +145,7 @@ this.panelBlack.Name = "panelBlack"; this.panelBlack.Size = new System.Drawing.Size(62, 49); this.panelBlack.TabIndex = 2; + this.panelBlack.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelGrey // @@ -140,6 +154,7 @@ this.panelGrey.Name = "panelGrey"; this.panelGrey.Size = new System.Drawing.Size(62, 49); this.panelGrey.TabIndex = 2; + this.panelGrey.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelWhite // @@ -148,6 +163,7 @@ this.panelWhite.Name = "panelWhite"; this.panelWhite.Size = new System.Drawing.Size(62, 49); this.panelWhite.TabIndex = 2; + this.panelWhite.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelYellow // @@ -156,6 +172,7 @@ this.panelYellow.Name = "panelYellow"; this.panelYellow.Size = new System.Drawing.Size(62, 49); this.panelYellow.TabIndex = 2; + this.panelYellow.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelBlue // @@ -164,6 +181,7 @@ this.panelBlue.Name = "panelBlue"; this.panelBlue.Size = new System.Drawing.Size(62, 49); this.panelBlue.TabIndex = 1; + this.panelBlue.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelGreen // @@ -172,6 +190,7 @@ this.panelGreen.Name = "panelGreen"; this.panelGreen.Size = new System.Drawing.Size(62, 50); this.panelGreen.TabIndex = 1; + this.panelGreen.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // panelRed // @@ -180,6 +199,7 @@ this.panelRed.Name = "panelRed"; this.panelRed.Size = new System.Drawing.Size(62, 49); this.panelRed.TabIndex = 0; + this.panelRed.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PanelColor_MouseDown); // // checkBoxBattary // @@ -245,77 +265,78 @@ // // pictureBoxObject // + this.pictureBoxObject.Anchor = System.Windows.Forms.AnchorStyles.None; this.pictureBoxObject.Location = new System.Drawing.Point(27, 81); this.pictureBoxObject.Name = "pictureBoxObject"; - this.pictureBoxObject.Size = new System.Drawing.Size(218, 141); + this.pictureBoxObject.Size = new System.Drawing.Size(346, 208); this.pictureBoxObject.TabIndex = 1; this.pictureBoxObject.TabStop = false; // // panelObject // + this.panelObject.AllowDrop = true; this.panelObject.Controls.Add(this.labelDopColor); this.panelObject.Controls.Add(this.labelColor); this.panelObject.Controls.Add(this.pictureBoxObject); this.panelObject.Location = new System.Drawing.Point(698, 39); this.panelObject.Name = "panelObject"; - this.panelObject.Size = new System.Drawing.Size(288, 245); + this.panelObject.Size = new System.Drawing.Size(412, 316); this.panelObject.TabIndex = 2; this.panelObject.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelObject.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelObject_DragEnter); // // labelDopColor // + this.labelDopColor.AllowDrop = true; this.labelDopColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.labelDopColor.Location = new System.Drawing.Point(139, 26); this.labelDopColor.Name = "labelDopColor"; this.labelDopColor.Size = new System.Drawing.Size(106, 52); this.labelDopColor.TabIndex = 3; this.labelDopColor.Text = "Доп цвет"; + this.labelDopColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelDopColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelAddColor_DragDrop); + this.labelDopColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.LabelColor_DragEnter); // // labelColor // + this.labelColor.AllowDrop = true; this.labelColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.labelColor.Location = new System.Drawing.Point(27, 26); this.labelColor.Name = "labelColor"; this.labelColor.Size = new System.Drawing.Size(106, 52); this.labelColor.TabIndex = 2; this.labelColor.Text = "Цвет"; + this.labelColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelBaseColor_DragDrop); + this.labelColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.LabelColor_DragEnter); // - // button1 + // buttonOk // - this.button1.Location = new System.Drawing.Point(725, 290); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(106, 50); - this.button1.TabIndex = 3; - this.button1.Text = "Добваить"; - this.button1.UseVisualStyleBackColor = true; + this.buttonOk.Location = new System.Drawing.Point(725, 361); + this.buttonOk.Name = "buttonOk"; + this.buttonOk.Size = new System.Drawing.Size(106, 50); + this.buttonOk.TabIndex = 3; + this.buttonOk.Text = "Добваить"; + this.buttonOk.UseVisualStyleBackColor = true; + this.buttonOk.Click += new System.EventHandler(this.ButtonOk_Click); // - // button2 + // buttonCancel // - this.button2.Location = new System.Drawing.Point(837, 290); - this.button2.Name = "button2"; - this.button2.Size = new System.Drawing.Size(106, 50); - this.button2.TabIndex = 4; - this.button2.Text = "Отмена"; - this.button2.UseVisualStyleBackColor = true; - // - // checkBoxBodyKit - // - this.checkBoxBodyKit.AutoSize = true; - this.checkBoxBodyKit.Location = new System.Drawing.Point(11, 224); - this.checkBoxBodyKit.Name = "checkBoxBodyKit"; - this.checkBoxBodyKit.Size = new System.Drawing.Size(89, 24); - this.checkBoxBodyKit.TabIndex = 10; - this.checkBoxBodyKit.Text = "BodyKit"; - this.checkBoxBodyKit.UseVisualStyleBackColor = true; + this.buttonCancel.Location = new System.Drawing.Point(837, 361); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(106, 50); + this.buttonCancel.TabIndex = 4; + this.buttonCancel.Text = "Отмена"; + this.buttonCancel.UseVisualStyleBackColor = true; // // FormTrolleybusConfig // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1180, 482); - this.Controls.Add(this.button2); - this.Controls.Add(this.button1); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOk); this.Controls.Add(this.panelObject); this.Controls.Add(this.groupBoxConfig); this.Name = "FormTrolleybusConfig"; @@ -345,7 +366,7 @@ private System.Windows.Forms.Label labelWeight; private System.Windows.Forms.Label labelSpeed; private System.Windows.Forms.Label labelModifiedObject; - private System.Windows.Forms.Label lebelSimpleObject; + private System.Windows.Forms.Label labelSimpleObject; private System.Windows.Forms.Panel panelPurple; private System.Windows.Forms.Panel panelBlack; private System.Windows.Forms.Panel panelGrey; @@ -355,8 +376,8 @@ private System.Windows.Forms.Panel panelObject; private System.Windows.Forms.Label labelDopColor; private System.Windows.Forms.Label labelColor; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button buttonOk; + private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.CheckBox checkBoxBodyKit; } } \ No newline at end of file diff --git a/Trolleybus/Trolleybus/FormTrolleybusConfig.cs b/Trolleybus/Trolleybus/FormTrolleybusConfig.cs index c7e5d26..f376efe 100644 --- a/Trolleybus/Trolleybus/FormTrolleybusConfig.cs +++ b/Trolleybus/Trolleybus/FormTrolleybusConfig.cs @@ -17,13 +17,23 @@ namespace Trolleybus public FormTrolleybusConfig() { InitializeComponent(); + panelBlack.MouseDown += PanelColor_MouseDown; + panelPurple.MouseDown += PanelColor_MouseDown; + panelGrey.MouseDown += PanelColor_MouseDown; + panelGreen.MouseDown += PanelColor_MouseDown; + panelRed.MouseDown += PanelColor_MouseDown; + panelWhite.MouseDown += PanelColor_MouseDown; + panelYellow.MouseDown += PanelColor_MouseDown; + panelBlue.MouseDown += PanelColor_MouseDown; + + buttonCancel.Click += (object sender, EventArgs e) => Close(); } private void DrawTrolleybus() { Bitmap btm = new(pictureBoxObject.Width, pictureBoxObject.Height); Graphics gr = Graphics.FromImage(btm); - _trolleybus?.SetPosition(5, 5, pictureBoxObject.Width, pictureBoxObject.Height); + _trolleybus?.SetPosition(25, 25, pictureBoxObject.Width, pictureBoxObject.Height); _trolleybus?.DrawTransport(gr); pictureBoxObject.Image = btm; } @@ -40,12 +50,7 @@ namespace Trolleybus } } - private void groupBox2_Enter(object sender, EventArgs e) - { - - } - - private void labelSimpleObject_Mouse_Down(object sender, MouseEventArgs e) + private void labelObject_Mouse_Down(object sender, MouseEventArgs e) { (sender as Label).DoDragDrop((sender as Label).Name, DragDropEffects.Move | DragDropEffects.Copy); } @@ -64,6 +69,7 @@ namespace Trolleybus private void panelObject_DragDrop(object sender, DragEventArgs e) { + //labelColor.BackColor = Color.Red; switch (e.Data.GetData(DataFormats.Text).ToString()) { case "labelSimpleObject": @@ -71,11 +77,49 @@ namespace Trolleybus break; case "labelModifiedObject": _trolleybus = new DrawningSmallTrolleybus((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White, Color.Black, - checkBoxHorns.Checked, checkBoxBattary.Checked, checkBoxBodyKit.Checked); + checkBoxBodyKit.Checked, checkBoxHorns.Checked, checkBoxBattary.Checked); break; } DrawTrolleybus(); } + private void PanelColor_MouseDown(object sender, MouseEventArgs e) + { + (sender as Control).DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy); + } + private void LabelColor_DragEnter(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(typeof(Color))) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.None; + } + } + + private void LabelBaseColor_DragDrop(object sender, DragEventArgs e) + { + //проверка на пустоту объекта + if (_trolleybus != null) + { + _trolleybus.Trolleybus.BodyColor = (Color)e.Data.GetData(typeof(Color)); + + DrawTrolleybus(); + } + } + + private void LabelAddColor_DragDrop(object sender, DragEventArgs e) + { + //проверка на пустоту объекта и правильную сущноть + if (_trolleybus != null && _trolleybus.Trolleybus is EntitySmallTrolleybus smallTrolleybus) + { + smallTrolleybus.DopColor = (Color)e.Data.GetData(typeof(Color)); + + DrawTrolleybus(); + } + } + private void ButtonOk_Click(object sender, EventArgs e) { EventAddTrolleybus?.Invoke(_trolleybus);