From 4a843f7eaf038b5c95dd4eeaf78d0188afad2aa5 Mon Sep 17 00:00:00 2001 From: alhimek17 Date: Sun, 21 Apr 2024 18:47:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=965=20=D0=B4=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectAirPlane/Entites/EntityAirPlane.cs | 8 +- .../ProjectAirPlane/Entites/EntityPlane.cs | 8 +- .../ProjectAirPlane/FormPlaneCollection.cs | 56 +----- .../FormPlaneConfig.Designer.cs | 165 +++++++++--------- .../ProjectAirPlane/FormPlaneConfig.cs | 117 +++++++------ 5 files changed, 156 insertions(+), 198 deletions(-) diff --git a/ProjectAirPlane/ProjectAirPlane/Entites/EntityAirPlane.cs b/ProjectAirPlane/ProjectAirPlane/Entites/EntityAirPlane.cs index 7baca9f..3ad9848 100644 --- a/ProjectAirPlane/ProjectAirPlane/Entites/EntityAirPlane.cs +++ b/ProjectAirPlane/ProjectAirPlane/Entites/EntityAirPlane.cs @@ -10,7 +10,13 @@ public class EntityAirPlane : EntityPlane /// public Color AdditionalColor { get; private set; } - public void SetAdditionalColor(Color color) => AdditionalColor = color; + /// + /// Присваивание цвета + /// + public void SetAdditionalColor(Color color) + { + AdditionalColor = color; + } /// /// Признак (опция) наличия радара diff --git a/ProjectAirPlane/ProjectAirPlane/Entites/EntityPlane.cs b/ProjectAirPlane/ProjectAirPlane/Entites/EntityPlane.cs index baf250e..bf667d0 100644 --- a/ProjectAirPlane/ProjectAirPlane/Entites/EntityPlane.cs +++ b/ProjectAirPlane/ProjectAirPlane/Entites/EntityPlane.cs @@ -20,7 +20,13 @@ public class EntityPlane /// public Color BodyColor { get; private set; } - public void SetBodyColor(Color color) => BodyColor = color; + /// + /// Присваивание цвета + /// + public void SetBodyColor(Color color) + { + BodyColor = color; + } /// /// Шаг перемещения автомобиля diff --git a/ProjectAirPlane/ProjectAirPlane/FormPlaneCollection.cs b/ProjectAirPlane/ProjectAirPlane/FormPlaneCollection.cs index 0fd97e2..be1b9e8 100644 --- a/ProjectAirPlane/ProjectAirPlane/FormPlaneCollection.cs +++ b/ProjectAirPlane/ProjectAirPlane/FormPlaneCollection.cs @@ -46,61 +46,7 @@ public partial class FormPlaneCollection : Form panelCompanyTools.Enabled = false; } - /// - /// Создание объекта класса-перемещения - /// - /// Тип создаваемого объекта - private void CreateObject(string type) - { - if (_company == null) - { - return; - } - - Random random = new(); - DrawningPlane drawningPlane; - switch (type) - { - case nameof(DrawningPlane): - drawningPlane = new DrawningPlane(random.Next(100, 300), random.Next(1000, 3000), GetColor(random)); - break; - case nameof(DrawningAirPlane): - // TODO вызов диалогового окна для выбора цвета - drawningPlane = new DrawningAirPlane(random.Next(100, 300), random.Next(1000, 3000), - GetColor(random), GetColor(random), - Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); - break; - default: - return; - } - - if (_company + drawningPlane != -1) - { - MessageBox.Show("Объект добавлен"); - pictureBox.Image = _company.Show(); - } - else - { - MessageBox.Show("Не удалось добавить объект"); - } - } - - /// - /// Получение цвета - /// - /// Генератор случайных чисел - /// - private static Color GetColor(Random random) - { - Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)); - ColorDialog dialog = new(); - if (dialog.ShowDialog() == DialogResult.OK) - { - color = dialog.Color; - } - - return color; - } + private void ButtonAddPlane_Click(object sender, EventArgs e) { FormPlaneConfig form = new(); diff --git a/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.Designer.cs b/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.Designer.cs index 7aa4b6c..44d6430 100644 --- a/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.Designer.cs +++ b/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.Designer.cs @@ -33,8 +33,8 @@ panelPurple = new Panel(); panelYellow = new Panel(); panelBlack = new Panel(); - panelGray = new Panel(); panelBlue = new Panel(); + panelGray = new Panel(); panelWhite = new Panel(); panelGreen = new Panel(); panelRed = new Panel(); @@ -50,17 +50,15 @@ pictureBoxObject = new PictureBox(); buttonAdd = new Button(); buttonCancel = new Button(); - panelObjects = new Panel(); + panelObject = new Panel(); labelAdditionalColor = new Label(); labelBodyColor = new Label(); - pictureBoxObjects = new PictureBox(); groupBoxConfig.SuspendLayout(); groupBoxColors.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxObject).BeginInit(); - panelObjects.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)pictureBoxObjects).BeginInit(); + panelObject.SuspendLayout(); SuspendLayout(); // // groupBoxConfig @@ -78,7 +76,7 @@ groupBoxConfig.Dock = DockStyle.Left; groupBoxConfig.Location = new Point(0, 0); groupBoxConfig.Name = "groupBoxConfig"; - groupBoxConfig.Size = new Size(432, 261); + groupBoxConfig.Size = new Size(491, 301); groupBoxConfig.TabIndex = 0; groupBoxConfig.TabStop = false; groupBoxConfig.Text = "Параметры"; @@ -88,14 +86,14 @@ groupBoxColors.Controls.Add(panelPurple); groupBoxColors.Controls.Add(panelYellow); groupBoxColors.Controls.Add(panelBlack); - groupBoxColors.Controls.Add(panelGray); groupBoxColors.Controls.Add(panelBlue); + groupBoxColors.Controls.Add(panelGray); groupBoxColors.Controls.Add(panelWhite); groupBoxColors.Controls.Add(panelGreen); groupBoxColors.Controls.Add(panelRed); - groupBoxColors.Location = new Point(189, 12); + groupBoxColors.Location = new Point(224, 13); groupBoxColors.Name = "groupBoxColors"; - groupBoxColors.Size = new Size(204, 115); + groupBoxColors.Size = new Size(249, 127); groupBoxColors.TabIndex = 9; groupBoxColors.TabStop = false; groupBoxColors.Text = "Цвета"; @@ -103,71 +101,71 @@ // panelPurple // panelPurple.BackColor = Color.Purple; - panelPurple.Location = new Point(164, 65); + panelPurple.Location = new Point(194, 72); panelPurple.Name = "panelPurple"; - panelPurple.Size = new Size(32, 33); + panelPurple.Size = new Size(31, 30); panelPurple.TabIndex = 3; // // panelYellow // panelYellow.BackColor = Color.Yellow; - panelYellow.Location = new Point(164, 22); + panelYellow.Location = new Point(194, 22); panelYellow.Name = "panelYellow"; - panelYellow.Size = new Size(32, 33); + panelYellow.Size = new Size(31, 30); panelYellow.TabIndex = 1; // // panelBlack // panelBlack.BackColor = Color.Black; - panelBlack.Location = new Point(116, 65); + panelBlack.Location = new Point(136, 72); panelBlack.Name = "panelBlack"; - panelBlack.Size = new Size(32, 33); + panelBlack.Size = new Size(31, 30); panelBlack.TabIndex = 4; // - // panelGray - // - panelGray.BackColor = Color.Gray; - panelGray.Location = new Point(60, 65); - panelGray.Name = "panelGray"; - panelGray.Size = new Size(32, 33); - panelGray.TabIndex = 5; - // // panelBlue // panelBlue.BackColor = Color.Blue; - panelBlue.Location = new Point(116, 22); + panelBlue.Location = new Point(136, 22); panelBlue.Name = "panelBlue"; - panelBlue.Size = new Size(32, 33); + panelBlue.Size = new Size(31, 30); panelBlue.TabIndex = 1; // + // panelGray + // + panelGray.BackColor = Color.Gray; + panelGray.Location = new Point(78, 72); + panelGray.Name = "panelGray"; + panelGray.Size = new Size(31, 30); + panelGray.TabIndex = 5; + // // panelWhite // panelWhite.BackColor = Color.White; - panelWhite.Location = new Point(10, 65); + panelWhite.Location = new Point(18, 72); panelWhite.Name = "panelWhite"; - panelWhite.Size = new Size(32, 33); + panelWhite.Size = new Size(31, 30); panelWhite.TabIndex = 2; // // panelGreen // panelGreen.BackColor = Color.Green; - panelGreen.Location = new Point(60, 22); + panelGreen.Location = new Point(78, 22); panelGreen.Name = "panelGreen"; - panelGreen.Size = new Size(32, 33); + panelGreen.Size = new Size(31, 30); panelGreen.TabIndex = 1; // // panelRed // panelRed.BackColor = Color.Red; - panelRed.Location = new Point(10, 22); + panelRed.Location = new Point(18, 22); panelRed.Name = "panelRed"; - panelRed.Size = new Size(32, 33); + panelRed.Size = new Size(31, 30); panelRed.TabIndex = 0; // // checkBoxChassi // checkBoxChassi.AutoSize = true; - checkBoxChassi.Location = new Point(12, 141); + checkBoxChassi.Location = new Point(12, 146); checkBoxChassi.Name = "checkBoxChassi"; checkBoxChassi.Size = new Size(162, 19); checkBoxChassi.TabIndex = 8; @@ -177,17 +175,17 @@ // checkBoxDopBak // checkBoxDopBak.AutoSize = true; - checkBoxDopBak.Location = new Point(12, 116); + checkBoxDopBak.Location = new Point(12, 121); checkBoxDopBak.Name = "checkBoxDopBak"; - checkBoxDopBak.Size = new Size(171, 19); + checkBoxDopBak.Size = new Size(177, 19); checkBoxDopBak.TabIndex = 7; - checkBoxDopBak.Text = "Признак наличия допбака"; + checkBoxDopBak.Text = "Признак наличия доп. бака"; checkBoxDopBak.UseVisualStyleBackColor = true; // // checkBoxRadar // checkBoxRadar.AutoSize = true; - checkBoxRadar.Location = new Point(12, 91); + checkBoxRadar.Location = new Point(12, 96); checkBoxRadar.Name = "checkBoxRadar"; checkBoxRadar.Size = new Size(164, 19); checkBoxRadar.TabIndex = 6; @@ -196,18 +194,18 @@ // // numericUpDownWeight // - numericUpDownWeight.Location = new Point(77, 50); + numericUpDownWeight.Location = new Point(71, 50); numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); numericUpDownWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownWeight.Name = "numericUpDownWeight"; - numericUpDownWeight.Size = new Size(72, 23); + numericUpDownWeight.Size = new Size(98, 23); numericUpDownWeight.TabIndex = 5; numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 }); // // labelWeight // labelWeight.AutoSize = true; - labelWeight.Location = new Point(25, 52); + labelWeight.Location = new Point(12, 50); labelWeight.Name = "labelWeight"; labelWeight.Size = new Size(26, 15); labelWeight.TabIndex = 4; @@ -215,18 +213,18 @@ // // numericUpDownSpeed // - numericUpDownSpeed.Location = new Point(77, 22); + numericUpDownSpeed.Location = new Point(71, 17); numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); numericUpDownSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownSpeed.Name = "numericUpDownSpeed"; - numericUpDownSpeed.Size = new Size(72, 23); + numericUpDownSpeed.Size = new Size(98, 23); numericUpDownSpeed.TabIndex = 3; numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 }); // // labelSpeed // labelSpeed.AutoSize = true; - labelSpeed.Location = new Point(12, 23); + labelSpeed.Location = new Point(6, 19); labelSpeed.Name = "labelSpeed"; labelSpeed.Size = new Size(59, 15); labelSpeed.TabIndex = 2; @@ -235,9 +233,9 @@ // labelModifiedObject // labelModifiedObject.BorderStyle = BorderStyle.FixedSingle; - labelModifiedObject.Location = new Point(305, 130); + labelModifiedObject.Location = new Point(373, 146); labelModifiedObject.Name = "labelModifiedObject"; - labelModifiedObject.Size = new Size(100, 39); + labelModifiedObject.Size = new Size(100, 23); labelModifiedObject.TabIndex = 1; labelModifiedObject.Text = "Продвинутый"; labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter; @@ -246,9 +244,9 @@ // labelSimpleObject // labelSimpleObject.BorderStyle = BorderStyle.FixedSingle; - labelSimpleObject.Location = new Point(199, 130); + labelSimpleObject.Location = new Point(242, 146); labelSimpleObject.Name = "labelSimpleObject"; - labelSimpleObject.Size = new Size(100, 39); + labelSimpleObject.Size = new Size(100, 23); labelSimpleObject.TabIndex = 0; labelSimpleObject.Text = "Простой"; labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter; @@ -256,17 +254,17 @@ // // pictureBoxObject // - pictureBoxObject.Location = new Point(0, 0); + pictureBoxObject.Location = new Point(20, 48); pictureBoxObject.Name = "pictureBoxObject"; - pictureBoxObject.Size = new Size(100, 50); - pictureBoxObject.TabIndex = 0; + pictureBoxObject.Size = new Size(306, 149); + pictureBoxObject.TabIndex = 1; pictureBoxObject.TabStop = false; // // buttonAdd // - buttonAdd.Location = new Point(455, 190); + buttonAdd.Location = new Point(554, 250); buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(83, 23); + buttonAdd.Size = new Size(75, 23); buttonAdd.TabIndex = 2; buttonAdd.Text = "Добавить"; buttonAdd.UseVisualStyleBackColor = true; @@ -274,73 +272,68 @@ // // buttonCancel // - buttonCancel.Location = new Point(594, 190); + buttonCancel.Location = new Point(721, 250); buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(87, 23); + buttonCancel.Size = new Size(75, 23); buttonCancel.TabIndex = 3; buttonCancel.Text = "Отмена"; buttonCancel.UseVisualStyleBackColor = true; // - // panelObjects + // panelObject // - panelObjects.AllowDrop = true; - panelObjects.Controls.Add(labelAdditionalColor); - panelObjects.Controls.Add(labelBodyColor); - panelObjects.Controls.Add(pictureBoxObjects); - panelObjects.Location = new Point(441, 12); - panelObjects.Name = "panelObjects"; - panelObjects.Size = new Size(308, 182); - panelObjects.TabIndex = 4; - panelObjects.DragDrop += PanelObjects_DragDrop; - panelObjects.DragEnter += PanelObjects_DragEnter; + panelObject.AllowDrop = true; + panelObject.Controls.Add(labelAdditionalColor); + panelObject.Controls.Add(labelBodyColor); + panelObject.Controls.Add(pictureBoxObject); + panelObject.Location = new Point(497, 17); + panelObject.Name = "panelObject"; + panelObject.Size = new Size(344, 200); + panelObject.TabIndex = 4; + panelObject.DragDrop += PanelObject_DragDrop; + panelObject.DragEnter += PanelObject_DragEnter; // // labelAdditionalColor // labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle; - labelAdditionalColor.Location = new Point(141, 3); + labelAdditionalColor.Location = new Point(226, 18); labelAdditionalColor.Name = "labelAdditionalColor"; - labelAdditionalColor.Size = new Size(83, 23); + labelAdditionalColor.Size = new Size(100, 23); labelAdditionalColor.TabIndex = 11; - labelAdditionalColor.Text = "Доп цвет"; + labelAdditionalColor.Text = "Доп. цвет"; labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter; + labelAdditionalColor.DragDrop += LabelAdditionalColor_DragDrop; + labelAdditionalColor.DragEnter += LabelAdditionalColor_DragEnter; // // labelBodyColor // labelBodyColor.BorderStyle = BorderStyle.FixedSingle; - labelBodyColor.Location = new Point(20, 3); + labelBodyColor.Location = new Point(20, 18); labelBodyColor.Name = "labelBodyColor"; - labelBodyColor.Size = new Size(83, 23); + labelBodyColor.Size = new Size(100, 23); labelBodyColor.TabIndex = 10; labelBodyColor.Text = "Цвет"; labelBodyColor.TextAlign = ContentAlignment.MiddleCenter; - // - // pictureBoxObjects - // - pictureBoxObjects.Location = new Point(20, 29); - pictureBoxObjects.Name = "pictureBoxObjects"; - pictureBoxObjects.Size = new Size(285, 143); - pictureBoxObjects.TabIndex = 0; - pictureBoxObjects.TabStop = false; + labelBodyColor.DragDrop += LabelBodyColor_DragDrop; + labelBodyColor.DragEnter += LabelBodyColor_DragEnter; // // FormPlaneConfig // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(761, 261); - Controls.Add(panelObjects); + ClientSize = new Size(869, 301); + Controls.Add(panelObject); Controls.Add(buttonCancel); Controls.Add(buttonAdd); Controls.Add(groupBoxConfig); Name = "FormPlaneConfig"; - Text = "Создание объекта"; + Text = "FormPlaneConfig"; groupBoxConfig.ResumeLayout(false); groupBoxConfig.PerformLayout(); groupBoxColors.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxObject).EndInit(); - panelObjects.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)pictureBoxObjects).EndInit(); + panelObject.ResumeLayout(false); ResumeLayout(false); } @@ -353,9 +346,9 @@ private NumericUpDown numericUpDownSpeed; private Label labelWeight; private NumericUpDown numericUpDownWeight; - private CheckBox checkBoxRadar; - private CheckBox checkBoxDopBak; private CheckBox checkBoxChassi; + private CheckBox checkBoxDopBak; + private CheckBox checkBoxRadar; private GroupBox groupBoxColors; private Panel panelRed; private Panel panelYellow; @@ -368,9 +361,7 @@ private PictureBox pictureBoxObject; private Button buttonAdd; private Button buttonCancel; - - private Panel panelObjects; - private PictureBox pictureBoxObjects; + private Panel panelObject; private Label labelBodyColor; private Label labelAdditionalColor; } diff --git a/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.cs b/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.cs index 91bf69b..6f76240 100644 --- a/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.cs +++ b/ProjectAirPlane/ProjectAirPlane/FormPlaneConfig.cs @@ -1,12 +1,5 @@ -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; + + using ProjectAirPlane.Drawnings; using ProjectAirPlane.Entites; @@ -17,7 +10,6 @@ namespace ProjectAirPlane; /// public partial class FormPlaneConfig : Form { - /// /// Объект - прорисовка самолёта /// @@ -33,24 +25,25 @@ public partial class FormPlaneConfig : Form /// public FormPlaneConfig() { - InitializeComponent(); - panelRed.MouseDown += Panel_MouseDown; panelGreen.MouseDown += Panel_MouseDown; panelBlue.MouseDown += Panel_MouseDown; - panelWhite.MouseDown += Panel_MouseDown; - panelBlack.MouseDown += Panel_MouseDown; - panelGray.MouseDown += Panel_MouseDown; - panelPurple.MouseDown += Panel_MouseDown; panelYellow.MouseDown += Panel_MouseDown; + panelWhite.MouseDown += Panel_MouseDown; + panelGray.MouseDown += Panel_MouseDown; + panelBlack.MouseDown += Panel_MouseDown; + panelPurple.MouseDown += Panel_MouseDown; + // TODO buttonCancel.Click привязать анонимный метод через lambda с закрытием формы buttonCancel.Click += (sender, e) => Close(); + + InitializeComponent(); } /// /// Привязка внешнего метода к событию /// - /// + /// public void AddEvent(PlaneDelegate planeDelegate) { PlaneDelegate += planeDelegate; @@ -64,7 +57,7 @@ public partial class FormPlaneConfig : Form Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); Graphics gr = Graphics.FromImage(bmp); _plane?.SetPictureSize(pictureBoxObject.Width, pictureBoxObject.Height); - _plane?.SetPosition(110, 75); + _plane?.SetPosition(15, 15); _plane?.DrawTransport(gr); pictureBoxObject.Image = bmp; } @@ -79,12 +72,13 @@ public partial class FormPlaneConfig : Form (sender as Label)?.DoDragDrop((sender as Label)?.Name ?? string.Empty, DragDropEffects.Move | DragDropEffects.Copy); } + /// /// Проверка получаемой информации (ее типа на соответствие требуемому) /// /// /// - private void PanelObjects_DragEnter(object sender, DragEventArgs e) + private void PanelObject_DragEnter(object sender, DragEventArgs e) { e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None; } @@ -94,7 +88,7 @@ public partial class FormPlaneConfig : Form /// /// /// - private void PanelObjects_DragDrop(object sender, DragEventArgs e) + private void PanelObject_DragDrop(object sender, DragEventArgs e) { switch (e.Data?.GetData(DataFormats.Text)?.ToString()) { @@ -102,39 +96,13 @@ public partial class FormPlaneConfig : Form _plane = new DrawningPlane((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White); break; case "labelModifiedObject": - _plane = new DrawningAirPlane((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, - Color.White, Color.Black, checkBoxRadar.Checked, checkBoxDopBak.Checked, checkBoxChassi.Checked); + _plane = new DrawningAirPlane((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White, + Color.Black, checkBoxRadar.Checked, checkBoxDopBak.Checked, checkBoxChassi.Checked); break; } DrawObject(); } - private void LabelColors_DragDrop(object? sender, DragEventArgs e) - { - if (_plane == null || sender == null || _plane.EntityPlane == null) - { - return; - } - - Label label = (Label)sender; - Color newColor = (Color)e.Data?.GetData(typeof(Color)); - - switch (label.Name) - { - case "labelBodyColor": - _plane.EntityPlane.SetBodyColor(newColor); - DrawObject(); - break; - case "labelAdditionalColor": - if (_plane is DrawningAirPlane) - { - (_plane.EntityPlane as EntityAirPlane)?.SetAdditionalColor(newColor); - DrawObject(); - } - break; - } - } - /// /// Передаем информацию при нажатии на Panel /// @@ -142,14 +110,55 @@ public partial class FormPlaneConfig : Form /// private void Panel_MouseDown(object? sender, MouseEventArgs e) { - (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, DragDropEffects.Move | DragDropEffects.Copy); + // TODO отправка цвета в Drag&Drop + (sender as Control)?.DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy); + } + // TODO Реализовать логику смены цветов: основного и дополнительного (для продвинутого объекта) + private void LabelBodyColor_DragDrop(object sender, DragEventArgs e) + { + if (_plane != null) + { + _plane.EntityPlane?.SetBodyColor((Color)e.Data.GetData(typeof(Color))); + DrawObject(); + } + } + + private void LabelBodyColor_DragEnter(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(typeof(Color))) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.None; + } + } + + private void LabelAdditionalColor_DragDrop(object sender, DragEventArgs e) + { + if (_plane.EntityPlane is EntityAirPlane _airplane) + { + _airplane.SetAdditionalColor((Color)e.Data.GetData(typeof(Color))); + } + DrawObject(); + } + + private void LabelAdditionalColor_DragEnter(object sender, DragEventArgs e) + { + if (_plane is DrawningAirPlane) + { + if (e.Data.GetDataPresent(typeof(Color))) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.None; + } + } } - /// - /// Передача объекта - /// - /// - /// private void ButtonAdd_Click(object sender, EventArgs e) { if (_plane != null)