From 9b810760470cf9ec625d74911716955834ec34ab Mon Sep 17 00:00:00 2001 From: Oleg Date: Tue, 13 Sep 2022 11:17:44 +0400 Subject: [PATCH] =?UTF-8?q?Lab1.=20=D0=94=D0=BE=D0=B4=D0=BB=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trolleybus/Trolleybus/Direction.cs | 19 +++ Trolleybus/Trolleybus/DrawingTrolleybus.cs | 140 ++++++++++++++++++ Trolleybus/Trolleybus/EntityTrolleybus.cs | 46 ++++++ Trolleybus/Trolleybus/Form1.Designer.cs | 131 +++++++++++++++- Trolleybus/Trolleybus/Form1.cs | 30 ++++ Trolleybus/Trolleybus/Form1.resx | 123 +++++++++++++++ .../Properties/Resources.Designer.cs | 107 ++++++++----- .../Trolleybus/Properties/Resources.resx | 26 +++- Trolleybus/Trolleybus/Resources/down30.png | Bin 0 -> 2030 bytes Trolleybus/Trolleybus/Resources/left30.png | Bin 0 -> 2112 bytes Trolleybus/Trolleybus/Resources/right30.png | Bin 0 -> 2138 bytes Trolleybus/Trolleybus/Resources/up30.png | Bin 0 -> 1986 bytes Trolleybus/Trolleybus/Trolleybus.csproj | 19 +++ 13 files changed, 598 insertions(+), 43 deletions(-) create mode 100644 Trolleybus/Trolleybus/Direction.cs create mode 100644 Trolleybus/Trolleybus/DrawingTrolleybus.cs create mode 100644 Trolleybus/Trolleybus/EntityTrolleybus.cs create mode 100644 Trolleybus/Trolleybus/Form1.resx create mode 100644 Trolleybus/Trolleybus/Resources/down30.png create mode 100644 Trolleybus/Trolleybus/Resources/left30.png create mode 100644 Trolleybus/Trolleybus/Resources/right30.png create mode 100644 Trolleybus/Trolleybus/Resources/up30.png diff --git a/Trolleybus/Trolleybus/Direction.cs b/Trolleybus/Trolleybus/Direction.cs new file mode 100644 index 0000000..68bfa63 --- /dev/null +++ b/Trolleybus/Trolleybus/Direction.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Trolleybus +{ + /// + /// Направление перемещения + /// + internal enum Direction + { + Up = 1, + Down = 2, + Left = 3, + Right = 4 + } +} diff --git a/Trolleybus/Trolleybus/DrawingTrolleybus.cs b/Trolleybus/Trolleybus/DrawingTrolleybus.cs new file mode 100644 index 0000000..f1ac88b --- /dev/null +++ b/Trolleybus/Trolleybus/DrawingTrolleybus.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; + +namespace Trolleybus +{ + /// + /// Класс прорисовки и перемещения + /// + internal class DrawingTrolleybus + { + public EntityTrolleybus Trolleybus { get; private set; } + /// + /// левая координата отрисовки + /// + private float _startPosX; + /// + /// верхняя координата отрисовки + /// + private float _startPosY; + /// + /// Ширина окна отрисовки + /// + private int? _pictureWidth = null; + /// + /// Высота окна отрисовки + /// + private int? _pictureHeight = null; + /// + /// Ширина отрисовки + /// + protected readonly int _trolleybusWidth = 0; + /// + /// Высота отрисовки + /// + protected readonly int _trolleybusHeight = 0; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес автомобиля + /// Цвет кузова + public void Init(int speed, float weight, Color bodyColor) + { + Trolleybus = new EntityTrolleybus(); + Trolleybus.Init(speed, weight, bodyColor); + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + /// Ширина картинки + /// Высота картинки + public void SetPosition(int x, int y, int width, int height) + { + _startPosX = x; + _startPosY = y; + _pictureWidth = width; + _pictureHeight = height; + } + /// + /// Изменение направвления перемещения + /// + /// Направление + public void MoveTransport(Direction direction) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + switch (direction) + { + //вправо + case Direction.Right: + if(_startPosX + _trolleybusWidth + Trolleybus.Step< _pictureWidth) + { + _startPosX += Trolleybus.Step; + } + break; + //влево + case Direction.Left: + if (_startPosX + _trolleybusWidth - Trolleybus.Step < _pictureWidth) + { + _startPosX += Trolleybus.Step; + } + break; + //вверх + case Direction.Up: + if (_startPosX + _trolleybusWidth - Trolleybus.Step < _pictureHeight) + { + _startPosX += Trolleybus.Step; + } + break; + //вниз + case Direction.Down: + if (_startPosX + _trolleybusWidth + Trolleybus.Step < _pictureHeight) + { + _startPosX += Trolleybus.Step; + } + break; + } + } + /// + /// Отрисовка троллейбуса + /// + /// + public void DrawTransport(Graphics g) + { + + } + /// + /// Смена границ формы отрисовки + /// + /// Ширина картинки + /// Высота картинки + public void ChangeBorders(int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + if(_pictureWidth <= _trolleybusWidth || _pictureHeight <= _trolleybusHeight) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + if (_startPosX + _trolleybusWidth > _pictureWidth) + { + _startPosX = _pictureWidth.Value - _trolleybusWidth; + } + if (_startPosY + _trolleybusHeight > _pictureHeight) + { + _startPosY = _pictureHeight.Value - _trolleybusHeight; + } + } + } +} diff --git a/Trolleybus/Trolleybus/EntityTrolleybus.cs b/Trolleybus/Trolleybus/EntityTrolleybus.cs new file mode 100644 index 0000000..686b943 --- /dev/null +++ b/Trolleybus/Trolleybus/EntityTrolleybus.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; + +namespace Trolleybus +{ + /// + /// Класс-сущность "Троллейбус" + /// + internal class EntityTrolleybus + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public float Weight { get; private set; } + /// + /// Цвет кузова + /// + public Color BodyColor { get; private set; } + /// + /// Шаг перемещения троллейбуса + /// + public float Step => Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса троллейбуса + /// + /// + /// + /// + /// + public void Init(int speed, float weight, Color bodyColor) + { + Random rnd = new Random(); + Speed = speed <= 0? rnd.Next(50, 150): speed; + Weight = weight <= 0 ? rnd.Next(40, 70) : weight; + bodyColor = bodyColor; + } + } +} diff --git a/Trolleybus/Trolleybus/Form1.Designer.cs b/Trolleybus/Trolleybus/Form1.Designer.cs index b2e84f3..29311d9 100644 --- a/Trolleybus/Trolleybus/Form1.Designer.cs +++ b/Trolleybus/Trolleybus/Form1.Designer.cs @@ -29,13 +29,142 @@ namespace Trolleybus /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabelSpeed = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabelWeight = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabelBodyColor = new System.Windows.Forms.ToolStripStatusLabel(); + this.buttonCreate = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.pictureBoxTrolleybus = new System.Windows.Forms.PictureBox(); + this.statusStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxTrolleybus)).BeginInit(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabelSpeed, + this.toolStripStatusLabelWeight, + this.toolStripStatusLabelBodyColor}); + this.statusStrip1.Location = new System.Drawing.Point(0, 428); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(800, 22); + this.statusStrip1.TabIndex = 1; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabelSpeed + // + this.toolStripStatusLabelSpeed.Name = "toolStripStatusLabelSpeed"; + this.toolStripStatusLabelSpeed.Size = new System.Drawing.Size(59, 17); + this.toolStripStatusLabelSpeed.Text = "Скорость"; + // + // toolStripStatusLabelWeight + // + this.toolStripStatusLabelWeight.Name = "toolStripStatusLabelWeight"; + this.toolStripStatusLabelWeight.Size = new System.Drawing.Size(26, 17); + this.toolStripStatusLabelWeight.Text = "Вес"; + // + // toolStripStatusLabelBodyColor + // + this.toolStripStatusLabelBodyColor.Name = "toolStripStatusLabelBodyColor"; + this.toolStripStatusLabelBodyColor.Size = new System.Drawing.Size(33, 17); + this.toolStripStatusLabelBodyColor.Text = "Цвет"; + // + // buttonCreate + // + this.buttonCreate.Location = new System.Drawing.Point(12, 395); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(75, 23); + this.buttonCreate.TabIndex = 2; + this.buttonCreate.Text = "Создать"; + this.buttonCreate.UseVisualStyleBackColor = true; + this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click); + // + // button5 + // + this.button5.BackgroundImage = global::Trolleybus.Properties.Resources.up30; + this.button5.Location = new System.Drawing.Point(722, 359); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(30, 30); + this.button5.TabIndex = 6; + this.button5.Text = "button5"; + this.button5.UseVisualStyleBackColor = true; + // + // button4 + // + this.button4.Image = global::Trolleybus.Properties.Resources.right30; + this.button4.Location = new System.Drawing.Point(758, 395); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(30, 30); + this.button4.TabIndex = 5; + this.button4.Text = "button4"; + this.button4.UseVisualStyleBackColor = true; + // + // button3 + // + this.button3.BackgroundImage = global::Trolleybus.Properties.Resources.left30; + this.button3.Location = new System.Drawing.Point(686, 395); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(30, 30); + this.button3.TabIndex = 4; + this.button3.Text = "button3"; + this.button3.UseVisualStyleBackColor = true; + // + // button2 + // + this.button2.Image = global::Trolleybus.Properties.Resources.down30; + this.button2.Location = new System.Drawing.Point(722, 395); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(30, 30); + this.button2.TabIndex = 3; + this.button2.Text = "button2"; + this.button2.UseVisualStyleBackColor = true; + // + // pictureBoxTrolleybus + // + this.pictureBoxTrolleybus.Location = new System.Drawing.Point(0, 0); + this.pictureBoxTrolleybus.Name = "pictureBoxTrolleybus"; + this.pictureBoxTrolleybus.Size = new System.Drawing.Size(800, 425); + this.pictureBoxTrolleybus.TabIndex = 0; + this.pictureBoxTrolleybus.TabStop = false; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.buttonCreate); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.pictureBoxTrolleybus); + this.Name = "Form1"; this.Text = "Form1"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxTrolleybus)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion + + private System.Windows.Forms.PictureBox pictureBoxTrolleybus; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelSpeed; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelWeight; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelBodyColor; + private System.Windows.Forms.Button buttonCreate; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; } } diff --git a/Trolleybus/Trolleybus/Form1.cs b/Trolleybus/Trolleybus/Form1.cs index ff03b79..7455084 100644 --- a/Trolleybus/Trolleybus/Form1.cs +++ b/Trolleybus/Trolleybus/Form1.cs @@ -12,9 +12,39 @@ namespace Trolleybus { public partial class Form1 : Form { + private DrawingTrolleybus _trolleybus; public Form1() { InitializeComponent(); } + /// + /// Метод прорисовки троллейбуса + /// + + private void Draw() + { + Bitmap bmp = new Bitmap(pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + Graphics gr = Graphics.FromImage(bmp); + _trolleybus?.DrawTransport(gr); + pictureBoxTrolleybus.Image = bmp; + } + + /// + /// Обработка нажатия "Создать" + /// + /// + /// + + private void buttonCreate_Click(object sender, EventArgs e) + { + Random rnd = new Random(); + _trolleybus = new DrawingTrolleybus(); + _trolleybus.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); + _trolleybus.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100), pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + toolStripStatusLabelSpeed.Text = $"Скорость: {_trolleybus.Trolleybus.Speed}"; + toolStripStatusLabelWeight.Text = $"Вес: {_trolleybus.Trolleybus.Weight}"; + toolStripStatusLabelBodyColor.Text = $"Цвет: {_trolleybus.Trolleybus.BodyColor.Name}"; + Draw(); + } } } diff --git a/Trolleybus/Trolleybus/Form1.resx b/Trolleybus/Trolleybus/Form1.resx new file mode 100644 index 0000000..174ebc7 --- /dev/null +++ b/Trolleybus/Trolleybus/Form1.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Trolleybus/Trolleybus/Properties/Resources.Designer.cs b/Trolleybus/Trolleybus/Properties/Resources.Designer.cs index 2f95526..f10ee69 100644 --- a/Trolleybus/Trolleybus/Properties/Resources.Designer.cs +++ b/Trolleybus/Trolleybus/Properties/Resources.Designer.cs @@ -1,70 +1,103 @@ //------------------------------------------------------------------------------ // -// Этот код создан программным средством. -// Версия среды выполнения: 4.0.30319.42000 +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 // -// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если -// код создан повторно. +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. // //------------------------------------------------------------------------------ - -namespace Trolleybus.Properties -{ +namespace Trolleybus.Properties { + using System; + + /// - /// Класс ресурсов со строгим типом для поиска локализованных строк и пр. + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. /// - // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder - // класс с помощью таких средств, как ResGen или Visual Studio. - // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen - // с параметром /str или заново постройте свой VS-проект. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// - /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Trolleybus.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// - /// Переопределяет свойство CurrentUICulture текущего потока для всех - /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap down30 { + get { + object obj = ResourceManager.GetObject("down30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap left30 { + get { + object obj = ResourceManager.GetObject("left30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap right30 { + get { + object obj = ResourceManager.GetObject("right30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap up30 { + get { + object obj = ResourceManager.GetObject("up30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/Trolleybus/Trolleybus/Properties/Resources.resx b/Trolleybus/Trolleybus/Properties/Resources.resx index af7dbeb..b5cfe0a 100644 --- a/Trolleybus/Trolleybus/Properties/Resources.resx +++ b/Trolleybus/Trolleybus/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,22 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\down30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\left30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\up30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\right30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Trolleybus/Trolleybus/Resources/down30.png b/Trolleybus/Trolleybus/Resources/down30.png new file mode 100644 index 0000000000000000000000000000000000000000..51b090e913d382bba3b2ba6616ca0dc4e6c69df9 GIT binary patch literal 2030 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 PqXV!GZkRf|z_kAY>$LR@ literal 0 HcmV?d00001 diff --git a/Trolleybus/Trolleybus/Resources/right30.png b/Trolleybus/Trolleybus/Resources/right30.png new file mode 100644 index 0000000000000000000000000000000000000000..26c7b47bf9541857ebddeccd1c0e6df8cf3a6a8a GIT binary patch literal 2138 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 literal 0 HcmV?d00001 diff --git a/Trolleybus/Trolleybus/Trolleybus.csproj b/Trolleybus/Trolleybus/Trolleybus.csproj index 5cb518c..ce41cd2 100644 --- a/Trolleybus/Trolleybus/Trolleybus.csproj +++ b/Trolleybus/Trolleybus/Trolleybus.csproj @@ -46,6 +46,9 @@ + + + Form @@ -54,6 +57,9 @@ + + Form1.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -62,6 +68,7 @@ True Resources.resx + True SettingsSingleFileGenerator @@ -76,5 +83,17 @@ + + + + + + + + + + + + \ No newline at end of file