diff --git a/WinFormsProject/AppView/AppView.csproj b/WinFormsProject/AppView/AppView.csproj
index db7c8b7..11b9c7c 100644
--- a/WinFormsProject/AppView/AppView.csproj
+++ b/WinFormsProject/AppView/AppView.csproj
@@ -21,7 +21,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WinFormsProject/AppView/PluginsConvention.cs b/WinFormsProject/AppView/PluginsConvention.cs
new file mode 100644
index 0000000..ee80b67
--- /dev/null
+++ b/WinFormsProject/AppView/PluginsConvention.cs
@@ -0,0 +1,220 @@
+using Contracts.StorageContracts;
+using Contracts.ViewModels;
+using ControlsLibraryNet60.Data;
+using ControlsLibraryNet60.Models;
+using DateBaseImplement.Implements;
+using PdfFormsLibrary;
+using PluginsConventionLibrary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using WinFormsLibrary;
+using WinFormsLibrary.not_visual;
+using WinFormsLibrary.SupportClasses;
+
+namespace AppView
+{
+ public class PluginsConvention : IPluginsConvention
+ {
+ private readonly IProviderStorage _providerStorage;
+ private readonly ITypeStorage _typeStorage;
+ private readonly DocumentWithImage documentWithImage1;
+ private readonly Table2column table2column1;
+ private readonly Gistograma gistograma1;
+ private readonly ControlDataTableTable DataTable = new ControlDataTableTable();
+
+ public string PluginName { get; set; } = "LabWork_03_plugin";
+
+ public UserControl GetControl
+ {
+ get
+ {
+ ReloadData();
+ return DataTable;
+ }
+ }
+
+ public PluginsConventionElement GetElement
+ {
+ get
+ {
+ var provider = DataTable.GetSelectedObject();
+ int id = -1;
+ if (provider != null)
+ {
+ id = Convert.ToInt32(provider.Id);
+ }
+
+ byte[] bytes = new byte[16];
+
+ BitConverter.GetBytes(id).CopyTo(bytes, 0);
+
+ return new()
+ {
+ Id = new Guid(bytes)
+ };
+ }
+ }
+
+ public PluginsConvention()
+ {
+ _providerStorage = new ProviderStorage();
+ _typeStorage = new TypeStorage();
+ documentWithImage1 = new();
+ table2column1 = new();
+ gistograma1 = new();
+
+ List columns = new List
+ {
+ new DataTableColumnConfig
+ {
+ ColumnHeader = "Id",
+ PropertyName = "Id",
+ Visible = false
+ },
+ new DataTableColumnConfig
+ {
+ ColumnHeader = "Название",
+ PropertyName = "Name",
+ Visible = true
+ },
+ new DataTableColumnConfig
+ {
+ ColumnHeader = "Тип изделий",
+ PropertyName = "Type",
+ Visible = true
+ },
+ new DataTableColumnConfig
+ {
+ ColumnHeader = "Телефон",
+ PropertyName = "Number",
+ Visible = true
+ }
+ };
+
+ DataTable.LoadColumns(columns);
+ }
+
+ public Form GetForm(PluginsConventionElement element)
+ {
+ if (element == null)
+ {
+ return new FormProvider(_providerStorage, _typeStorage);
+ }
+ else
+ {
+ FormProvider form = new FormProvider(_providerStorage, _typeStorage);
+ form.Id = element.Id.GetHashCode();
+ return form;
+ }
+ }
+
+ public Form GetThesaurus()
+ {
+ return new FormType(_typeStorage);
+ }
+
+ public bool DeleteElement(PluginsConventionElement element)
+ {
+ _providerStorage.Delete(
+ new(element.Id.GetHashCode())
+ );
+ return true;
+ }
+
+ public void ReloadData()
+ {
+ try
+ {
+ var list = _providerStorage.GetFullList();
+ DataTable.Clear();
+ DataTable.AddTable(list);
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(
+ ex.Message,
+ "Ошибка",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Error
+ );
+ }
+ }
+
+ public bool CreateWordDocument(PluginsConventionSaveDocument saveDocument)
+ {
+ ImageClass info = new ImageClass();
+
+ var images = _providerStorage.GetFullList().Select(x => x.Logo).ToList();
+
+ info.Title = "Images";
+ info.Path = saveDocument.FileName;
+ info.Files = images;
+
+ documentWithImage1.CreateDocument(info);
+ return true;
+ }
+
+ public bool CreateTableDocument(PluginsConventionSaveDocument saveDocument)
+ {
+ System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
+
+ List columnDefinitionsUp = new List {
+ new ColumnDefinition{Header = "#", PropertyName = "Id", Weight = 30},
+ new ColumnDefinition{Header = "Информация", PropertyName = "NumberType", Weight = 30},
+ new ColumnDefinition{Header = "", PropertyName = "NumberType", Weight = 30},
+ new ColumnDefinition{Header = "Номер телефона", PropertyName = "Number", Weight = 30},
+ };
+ List columnDefinitionsDown = new List {
+ new ColumnDefinition{Header = "#", PropertyName = "Id", Weight = 30},
+ new ColumnDefinition{Header = "Название", PropertyName = "Name", Weight = 30},
+ new ColumnDefinition{Header = "Тип изделия", PropertyName = "Type", Weight = 30},
+ new ColumnDefinition{Header = "-", PropertyName = "Number", Weight = 30},
+ };
+
+ var providers = _providerStorage.GetFullList();
+
+ List mergedColums = new() { new int[] { 1, 2 } };
+
+ BigTable info = new(saveDocument.FileName, "Table", columnDefinitionsUp, columnDefinitionsDown, providers, mergedColums);
+
+ table2column1.CreateTable(info);
+ MessageBox.Show("Готово");
+ return true;
+ }
+
+ public bool CreateChartDocument(PluginsConventionSaveDocument saveDocument)
+ {
+
+ var providers = _providerStorage.GetFullList();
+
+ var uniqueTypes = providers.Select(p => p.Type).Distinct();
+
+ List data = new List();
+
+ foreach (var uniqueType in uniqueTypes)
+ {
+ var typeProviders = providers.Where(p => p.Type == uniqueType).ToList();
+
+ var dataList = new List();
+
+ // Используем Count() для подсчета общего количества поставщиков каждого типа
+ int totalCount = typeProviders.Count();
+
+ ChartData chData = new ChartData();
+ chData.SeriesName = uniqueType;
+ chData.Data = new double[] { totalCount };
+
+ data.Add(chData);
+ }
+
+ gistograma1.GenerateExcelChartDocument(saveDocument.FileName, "Сводка по типам изделия.", "Количество поставщиков для товаров каждого типа", WinFormsLibrary.not_visual.LegendPosition.Bottom, data);
+ return true;
+ }
+
+
+ }
+}
diff --git a/WinFormsProject/Contracts/BindingModels/ProviderBindingModel.cs b/WinFormsProject/Contracts/BindingModels/ProviderBindingModel.cs
index 37e4e07..8576299 100644
--- a/WinFormsProject/Contracts/BindingModels/ProviderBindingModel.cs
+++ b/WinFormsProject/Contracts/BindingModels/ProviderBindingModel.cs
@@ -22,5 +22,10 @@ namespace Contracts.BindingModels
{
Id = provider.Id;
}
+
+ public ProviderBindingModel(int id)
+ {
+ Id = id;
+ }
}
}
diff --git a/WinFormsProject/Plugins/AppView.dll b/WinFormsProject/Plugins/AppView.dll
new file mode 100644
index 0000000..2246454
Binary files /dev/null and b/WinFormsProject/Plugins/AppView.dll differ
diff --git a/WinFormsProject/Plugins/Aspose.Words.Pdf2Word.dll b/WinFormsProject/Plugins/Aspose.Words.Pdf2Word.dll
new file mode 100644
index 0000000..72d08f0
Binary files /dev/null and b/WinFormsProject/Plugins/Aspose.Words.Pdf2Word.dll differ
diff --git a/WinFormsProject/Plugins/Aspose.Words.dll b/WinFormsProject/Plugins/Aspose.Words.dll
new file mode 100644
index 0000000..10946f7
Binary files /dev/null and b/WinFormsProject/Plugins/Aspose.Words.dll differ
diff --git a/WinFormsProject/Plugins/BouncyCastle.Cryptography.dll b/WinFormsProject/Plugins/BouncyCastle.Cryptography.dll
new file mode 100644
index 0000000..637242d
Binary files /dev/null and b/WinFormsProject/Plugins/BouncyCastle.Cryptography.dll differ
diff --git a/WinFormsProject/Plugins/ComponentsLibraryNet60.dll b/WinFormsProject/Plugins/ComponentsLibraryNet60.dll
new file mode 100644
index 0000000..9807306
Binary files /dev/null and b/WinFormsProject/Plugins/ComponentsLibraryNet60.dll differ
diff --git a/WinFormsProject/Plugins/Contracts.dll b/WinFormsProject/Plugins/Contracts.dll
new file mode 100644
index 0000000..88031fb
Binary files /dev/null and b/WinFormsProject/Plugins/Contracts.dll differ
diff --git a/WinFormsProject/Plugins/ControlsLibraryNet60.dll b/WinFormsProject/Plugins/ControlsLibraryNet60.dll
new file mode 100644
index 0000000..3d14013
Binary files /dev/null and b/WinFormsProject/Plugins/ControlsLibraryNet60.dll differ
diff --git a/WinFormsProject/Plugins/DataModels.dll b/WinFormsProject/Plugins/DataModels.dll
new file mode 100644
index 0000000..00fe45d
Binary files /dev/null and b/WinFormsProject/Plugins/DataModels.dll differ
diff --git a/WinFormsProject/Plugins/DateBaseImplement.dll b/WinFormsProject/Plugins/DateBaseImplement.dll
new file mode 100644
index 0000000..d1f34a7
Binary files /dev/null and b/WinFormsProject/Plugins/DateBaseImplement.dll differ
diff --git a/WinFormsProject/Plugins/DocumentFormat.OpenXml.dll b/WinFormsProject/Plugins/DocumentFormat.OpenXml.dll
new file mode 100644
index 0000000..ccdb81c
Binary files /dev/null and b/WinFormsProject/Plugins/DocumentFormat.OpenXml.dll differ
diff --git a/WinFormsProject/Plugins/EPPlus.Interfaces.dll b/WinFormsProject/Plugins/EPPlus.Interfaces.dll
new file mode 100644
index 0000000..588ea51
Binary files /dev/null and b/WinFormsProject/Plugins/EPPlus.Interfaces.dll differ
diff --git a/WinFormsProject/Plugins/EPPlus.System.Drawing.dll b/WinFormsProject/Plugins/EPPlus.System.Drawing.dll
new file mode 100644
index 0000000..cea9325
Binary files /dev/null and b/WinFormsProject/Plugins/EPPlus.System.Drawing.dll differ
diff --git a/WinFormsProject/Plugins/EPPlus.dll b/WinFormsProject/Plugins/EPPlus.dll
new file mode 100644
index 0000000..e700d6e
Binary files /dev/null and b/WinFormsProject/Plugins/EPPlus.dll differ
diff --git a/WinFormsProject/Plugins/Enums.NET.dll b/WinFormsProject/Plugins/Enums.NET.dll
new file mode 100644
index 0000000..adc8614
Binary files /dev/null and b/WinFormsProject/Plugins/Enums.NET.dll differ
diff --git a/WinFormsProject/Plugins/ExcelFormsLibrary.dll b/WinFormsProject/Plugins/ExcelFormsLibrary.dll
new file mode 100644
index 0000000..4a36d9c
Binary files /dev/null and b/WinFormsProject/Plugins/ExcelFormsLibrary.dll differ
diff --git a/WinFormsProject/Plugins/Humanizer.dll b/WinFormsProject/Plugins/Humanizer.dll
new file mode 100644
index 0000000..c9a7ef8
Binary files /dev/null and b/WinFormsProject/Plugins/Humanizer.dll differ
diff --git a/WinFormsProject/Plugins/ICSharpCode.SharpZipLib.dll b/WinFormsProject/Plugins/ICSharpCode.SharpZipLib.dll
new file mode 100644
index 0000000..8a74343
Binary files /dev/null and b/WinFormsProject/Plugins/ICSharpCode.SharpZipLib.dll differ
diff --git a/WinFormsProject/Plugins/MathNet.Numerics.dll b/WinFormsProject/Plugins/MathNet.Numerics.dll
new file mode 100644
index 0000000..71d6b4c
Binary files /dev/null and b/WinFormsProject/Plugins/MathNet.Numerics.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll
new file mode 100644
index 0000000..a5a4d91
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Abstractions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Design.dll b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Design.dll
new file mode 100644
index 0000000..de4ea40
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Design.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Relational.dll b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Relational.dll
new file mode 100644
index 0000000..8681a8e
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.Relational.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.dll b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.dll
new file mode 100644
index 0000000..1caeb31
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.EntityFrameworkCore.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Caching.Abstractions.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Caching.Abstractions.dll
new file mode 100644
index 0000000..be73869
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Caching.Abstractions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Caching.Memory.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Caching.Memory.dll
new file mode 100644
index 0000000..561804a
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Caching.Memory.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll
new file mode 100644
index 0000000..3a12ec4
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.Abstractions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.FileExtensions.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.FileExtensions.dll
new file mode 100644
index 0000000..160814d
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.FileExtensions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.Json.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.Json.dll
new file mode 100644
index 0000000..1c9ba24
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.Json.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.dll
new file mode 100644
index 0000000..4c0a93b
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Configuration.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/WinFormsProject/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll
new file mode 100644
index 0000000..11e5f2e
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.DependencyInjection.dll b/WinFormsProject/Plugins/Microsoft.Extensions.DependencyInjection.dll
new file mode 100644
index 0000000..2c64257
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.DependencyInjection.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.DependencyModel.dll b/WinFormsProject/Plugins/Microsoft.Extensions.DependencyModel.dll
new file mode 100644
index 0000000..072af1f
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.DependencyModel.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.FileProviders.Abstractions.dll b/WinFormsProject/Plugins/Microsoft.Extensions.FileProviders.Abstractions.dll
new file mode 100644
index 0000000..d1045b6
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.FileProviders.Abstractions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.FileProviders.Physical.dll b/WinFormsProject/Plugins/Microsoft.Extensions.FileProviders.Physical.dll
new file mode 100644
index 0000000..e712dbe
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.FileProviders.Physical.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.FileSystemGlobbing.dll b/WinFormsProject/Plugins/Microsoft.Extensions.FileSystemGlobbing.dll
new file mode 100644
index 0000000..61c4e0c
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.FileSystemGlobbing.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Logging.Abstractions.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Logging.Abstractions.dll
new file mode 100644
index 0000000..03edd8f
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Logging.Abstractions.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Logging.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Logging.dll
new file mode 100644
index 0000000..c53f5d2
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Logging.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Options.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Options.dll
new file mode 100644
index 0000000..3987d66
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Options.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.Extensions.Primitives.dll b/WinFormsProject/Plugins/Microsoft.Extensions.Primitives.dll
new file mode 100644
index 0000000..081abea
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.Extensions.Primitives.dll differ
diff --git a/WinFormsProject/Plugins/Microsoft.IO.RecyclableMemoryStream.dll b/WinFormsProject/Plugins/Microsoft.IO.RecyclableMemoryStream.dll
new file mode 100644
index 0000000..6d4515a
Binary files /dev/null and b/WinFormsProject/Plugins/Microsoft.IO.RecyclableMemoryStream.dll differ
diff --git a/WinFormsProject/Plugins/MigraDoc.DocumentObjectModel.dll b/WinFormsProject/Plugins/MigraDoc.DocumentObjectModel.dll
new file mode 100644
index 0000000..2bf457c
Binary files /dev/null and b/WinFormsProject/Plugins/MigraDoc.DocumentObjectModel.dll differ
diff --git a/WinFormsProject/Plugins/MigraDoc.Rendering.dll b/WinFormsProject/Plugins/MigraDoc.Rendering.dll
new file mode 100644
index 0000000..9c14fbe
Binary files /dev/null and b/WinFormsProject/Plugins/MigraDoc.Rendering.dll differ
diff --git a/WinFormsProject/Plugins/Mono.TextTemplating.dll b/WinFormsProject/Plugins/Mono.TextTemplating.dll
new file mode 100644
index 0000000..d5a4b3c
Binary files /dev/null and b/WinFormsProject/Plugins/Mono.TextTemplating.dll differ
diff --git a/WinFormsProject/Plugins/NPOI.Core.dll b/WinFormsProject/Plugins/NPOI.Core.dll
new file mode 100644
index 0000000..fad3f0a
Binary files /dev/null and b/WinFormsProject/Plugins/NPOI.Core.dll differ
diff --git a/WinFormsProject/Plugins/NPOI.OOXML.dll b/WinFormsProject/Plugins/NPOI.OOXML.dll
new file mode 100644
index 0000000..166c342
Binary files /dev/null and b/WinFormsProject/Plugins/NPOI.OOXML.dll differ
diff --git a/WinFormsProject/Plugins/NPOI.OpenXml4Net.dll b/WinFormsProject/Plugins/NPOI.OpenXml4Net.dll
new file mode 100644
index 0000000..571415f
Binary files /dev/null and b/WinFormsProject/Plugins/NPOI.OpenXml4Net.dll differ
diff --git a/WinFormsProject/Plugins/NPOI.OpenXmlFormats.dll b/WinFormsProject/Plugins/NPOI.OpenXmlFormats.dll
new file mode 100644
index 0000000..724ff8c
Binary files /dev/null and b/WinFormsProject/Plugins/NPOI.OpenXmlFormats.dll differ
diff --git a/WinFormsProject/Plugins/Npgsql.EntityFrameworkCore.PostgreSQL.dll b/WinFormsProject/Plugins/Npgsql.EntityFrameworkCore.PostgreSQL.dll
new file mode 100644
index 0000000..bd22f65
Binary files /dev/null and b/WinFormsProject/Plugins/Npgsql.EntityFrameworkCore.PostgreSQL.dll differ
diff --git a/WinFormsProject/Plugins/Npgsql.dll b/WinFormsProject/Plugins/Npgsql.dll
new file mode 100644
index 0000000..4a8471b
Binary files /dev/null and b/WinFormsProject/Plugins/Npgsql.dll differ
diff --git a/WinFormsProject/Plugins/OxyPlot.WindowsForms.dll b/WinFormsProject/Plugins/OxyPlot.WindowsForms.dll
new file mode 100644
index 0000000..9b2e151
Binary files /dev/null and b/WinFormsProject/Plugins/OxyPlot.WindowsForms.dll differ
diff --git a/WinFormsProject/Plugins/OxyPlot.dll b/WinFormsProject/Plugins/OxyPlot.dll
new file mode 100644
index 0000000..0cfbb3b
Binary files /dev/null and b/WinFormsProject/Plugins/OxyPlot.dll differ
diff --git a/WinFormsProject/Plugins/PdfFormsLibrary.dll b/WinFormsProject/Plugins/PdfFormsLibrary.dll
new file mode 100644
index 0000000..8f09e38
Binary files /dev/null and b/WinFormsProject/Plugins/PdfFormsLibrary.dll differ
diff --git a/WinFormsProject/Plugins/PdfSharp.Charting.dll b/WinFormsProject/Plugins/PdfSharp.Charting.dll
new file mode 100644
index 0000000..384a0f0
Binary files /dev/null and b/WinFormsProject/Plugins/PdfSharp.Charting.dll differ
diff --git a/WinFormsProject/Plugins/PdfSharp.dll b/WinFormsProject/Plugins/PdfSharp.dll
new file mode 100644
index 0000000..aa564e1
Binary files /dev/null and b/WinFormsProject/Plugins/PdfSharp.dll differ
diff --git a/WinFormsProject/Plugins/PluginsConventionLibrary.dll b/WinFormsProject/Plugins/PluginsConventionLibrary.dll
new file mode 100644
index 0000000..e3cd04b
Binary files /dev/null and b/WinFormsProject/Plugins/PluginsConventionLibrary.dll differ
diff --git a/WinFormsProject/Plugins/SixLabors.Fonts.dll b/WinFormsProject/Plugins/SixLabors.Fonts.dll
new file mode 100644
index 0000000..281d8a7
Binary files /dev/null and b/WinFormsProject/Plugins/SixLabors.Fonts.dll differ
diff --git a/WinFormsProject/Plugins/SixLabors.ImageSharp.dll b/WinFormsProject/Plugins/SixLabors.ImageSharp.dll
new file mode 100644
index 0000000..ece54a0
Binary files /dev/null and b/WinFormsProject/Plugins/SixLabors.ImageSharp.dll differ
diff --git a/WinFormsProject/Plugins/SkiaSharp.dll b/WinFormsProject/Plugins/SkiaSharp.dll
new file mode 100644
index 0000000..518648c
Binary files /dev/null and b/WinFormsProject/Plugins/SkiaSharp.dll differ
diff --git a/WinFormsProject/Plugins/System.Security.Cryptography.Pkcs.dll b/WinFormsProject/Plugins/System.Security.Cryptography.Pkcs.dll
new file mode 100644
index 0000000..eedf8e6
Binary files /dev/null and b/WinFormsProject/Plugins/System.Security.Cryptography.Pkcs.dll differ
diff --git a/WinFormsProject/Plugins/System.Security.Cryptography.Xml.dll b/WinFormsProject/Plugins/System.Security.Cryptography.Xml.dll
new file mode 100644
index 0000000..b43ece0
Binary files /dev/null and b/WinFormsProject/Plugins/System.Security.Cryptography.Xml.dll differ
diff --git a/WinFormsProject/Plugins/System.Text.Encodings.Web.dll b/WinFormsProject/Plugins/System.Text.Encodings.Web.dll
new file mode 100644
index 0000000..13a219a
Binary files /dev/null and b/WinFormsProject/Plugins/System.Text.Encodings.Web.dll differ
diff --git a/WinFormsProject/Plugins/System.Text.Json.dll b/WinFormsProject/Plugins/System.Text.Json.dll
new file mode 100644
index 0000000..2078226
Binary files /dev/null and b/WinFormsProject/Plugins/System.Text.Json.dll differ
diff --git a/WinFormsProject/Plugins/WinFormsLibraryAA.dll b/WinFormsProject/Plugins/WinFormsLibraryAA.dll
new file mode 100644
index 0000000..7a748c1
Binary files /dev/null and b/WinFormsProject/Plugins/WinFormsLibraryAA.dll differ
diff --git a/WinFormsProject/Plugins/libs.XSSFWookbook.dll b/WinFormsProject/Plugins/libs.XSSFWookbook.dll
new file mode 100644
index 0000000..772f659
Binary files /dev/null and b/WinFormsProject/Plugins/libs.XSSFWookbook.dll differ
diff --git a/WinFormsProject/PluginsConventionLibrary/IPluginsConvention.cs b/WinFormsProject/PluginsConventionLibrary/IPluginsConvention.cs
new file mode 100644
index 0000000..52de76e
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibrary/IPluginsConvention.cs
@@ -0,0 +1,23 @@
+using ControlsLibraryNet60.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public interface IPluginsConvention
+ {
+ string PluginName { get; }
+ UserControl GetControl { get; }
+ PluginsConventionElement GetElement { get; }
+ Form GetForm(PluginsConventionElement element);
+ Form GetThesaurus();
+ bool DeleteElement(PluginsConventionElement element);
+ void ReloadData();
+ bool CreateWordDocument(PluginsConventionSaveDocument saveDocument);
+ bool CreateTableDocument(PluginsConventionSaveDocument saveDocument);
+ bool CreateChartDocument(PluginsConventionSaveDocument saveDocument);
+ }
+}
diff --git a/WinFormsProject/PluginsConventionLibrary/PluginsConventionElement.cs b/WinFormsProject/PluginsConventionLibrary/PluginsConventionElement.cs
new file mode 100644
index 0000000..775c74a
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibrary/PluginsConventionElement.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public class PluginsConventionElement
+ {
+ public Guid Id { get; set; }
+ }
+}
diff --git a/WinFormsProject/PluginsConventionLibrary/PluginsConventionLibrary.csproj b/WinFormsProject/PluginsConventionLibrary/PluginsConventionLibrary.csproj
new file mode 100644
index 0000000..9aad2c3
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibrary/PluginsConventionLibrary.csproj
@@ -0,0 +1,18 @@
+
+
+
+ net6.0-windows
+ enable
+ true
+ enable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WinFormsProject/PluginsConventionLibrary/PluginsConventionSaveDocument.cs b/WinFormsProject/PluginsConventionLibrary/PluginsConventionSaveDocument.cs
new file mode 100644
index 0000000..f902bc6
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibrary/PluginsConventionSaveDocument.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public class PluginsConventionSaveDocument
+ {
+ public string FileName { get; set; }
+ }
+}
diff --git a/WinFormsProject/PluginsConventionLibraryNet60/IPluginsConvention.cs b/WinFormsProject/PluginsConventionLibraryNet60/IPluginsConvention.cs
new file mode 100644
index 0000000..cc07e35
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibraryNet60/IPluginsConvention.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibraryNet60
+{
+ public interface IPluginsConvention
+ {
+ string PluginName { get; }
+ UserControl GetControl { get; }
+ PluginsConventionElement GetElement { get; }
+ Form GetForm(PluginsConventionElement element);
+ Form GetThesaurus();
+ bool DeleteElement(PluginsConventionElement element);
+ void ReloadData();
+ bool CreateWordDocument(PluginsConventionSaveDocument saveDocument);
+ bool CreateTableDocument(PluginsConventionSaveDocument saveDocument);
+ bool CreateChartDocument(PluginsConventionSaveDocument saveDocument);
+ }
+}
diff --git a/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionElement.cs b/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionElement.cs
new file mode 100644
index 0000000..6ebd7a3
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionElement.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibraryNet60
+{
+ public class PluginsConventionElement
+ {
+ public Guid Id { get; set; }
+ }
+}
diff --git a/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionLibraryNet60.csproj b/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionLibraryNet60.csproj
new file mode 100644
index 0000000..b57c89e
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionLibraryNet60.csproj
@@ -0,0 +1,11 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ enable
+
+
+
\ No newline at end of file
diff --git a/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionSaveDocument.cs b/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionSaveDocument.cs
new file mode 100644
index 0000000..f1ea9aa
--- /dev/null
+++ b/WinFormsProject/PluginsConventionLibraryNet60/PluginsConventionSaveDocument.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibraryNet60
+{
+ public class PluginsConventionSaveDocument
+ {
+ public string FileName { get; set; }
+ }
+}
diff --git a/WinFormsProject/WinFormsAppByPlugins/FormMain.Designer.cs b/WinFormsProject/WinFormsAppByPlugins/FormMain.Designer.cs
new file mode 100644
index 0000000..232f7d6
--- /dev/null
+++ b/WinFormsProject/WinFormsAppByPlugins/FormMain.Designer.cs
@@ -0,0 +1,173 @@
+namespace WinFormsAppByPlugins
+{
+ partial class FormMain
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ menuStrip = new MenuStrip();
+ ControlsStripMenuItem = new ToolStripMenuItem();
+ ActionsToolStripMenuItem = new ToolStripMenuItem();
+ ThesaurusToolStripMenuItem = new ToolStripMenuItem();
+ AddElementToolStripMenuItem = new ToolStripMenuItem();
+ UpdElementToolStripMenuItem = new ToolStripMenuItem();
+ DelElementToolStripMenuItem = new ToolStripMenuItem();
+ DocsToolStripMenuItem = new ToolStripMenuItem();
+ SimpleDocToolStripMenuItem = new ToolStripMenuItem();
+ TableDocToolStripMenuItem = new ToolStripMenuItem();
+ ChartDocToolStripMenuItem = new ToolStripMenuItem();
+ panelControl = new Panel();
+ menuStrip.SuspendLayout();
+ SuspendLayout();
+ //
+ // menuStrip
+ //
+ menuStrip.Items.AddRange(new ToolStripItem[] { ControlsStripMenuItem, ActionsToolStripMenuItem, DocsToolStripMenuItem });
+ menuStrip.Location = new Point(0, 0);
+ menuStrip.Name = "menuStrip";
+ menuStrip.Size = new Size(800, 24);
+ menuStrip.TabIndex = 0;
+ menuStrip.Text = "Меню";
+ //
+ // ControlsStripMenuItem
+ //
+ ControlsStripMenuItem.Name = "ControlsStripMenuItem";
+ ControlsStripMenuItem.Size = new Size(90, 20);
+ ControlsStripMenuItem.Text = "Компоненты";
+ //
+ // ActionsToolStripMenuItem
+ //
+ ActionsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ThesaurusToolStripMenuItem, AddElementToolStripMenuItem, UpdElementToolStripMenuItem, DelElementToolStripMenuItem });
+ ActionsToolStripMenuItem.Name = "ActionsToolStripMenuItem";
+ ActionsToolStripMenuItem.Size = new Size(70, 20);
+ ActionsToolStripMenuItem.Text = "Действия";
+ //
+ // ThesaurusToolStripMenuItem
+ //
+ ThesaurusToolStripMenuItem.Name = "ThesaurusToolStripMenuItem";
+ ThesaurusToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.I;
+ ThesaurusToolStripMenuItem.Size = new Size(180, 22);
+ ThesaurusToolStripMenuItem.Text = "Справочник";
+ ThesaurusToolStripMenuItem.Click += ThesaurusToolStripMenuItem_Click;
+ //
+ // AddElementToolStripMenuItem
+ //
+ AddElementToolStripMenuItem.Name = "AddElementToolStripMenuItem";
+ AddElementToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.A;
+ AddElementToolStripMenuItem.Size = new Size(180, 22);
+ AddElementToolStripMenuItem.Text = "Добавить";
+ AddElementToolStripMenuItem.Click += AddElementToolStripMenuItem_Click;
+ //
+ // UpdElementToolStripMenuItem
+ //
+ UpdElementToolStripMenuItem.Name = "UpdElementToolStripMenuItem";
+ UpdElementToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.U;
+ UpdElementToolStripMenuItem.Size = new Size(180, 22);
+ UpdElementToolStripMenuItem.Text = "Изменить";
+ UpdElementToolStripMenuItem.Click += UpdElementToolStripMenuItem_Click;
+ //
+ // DelElementToolStripMenuItem
+ //
+ DelElementToolStripMenuItem.Name = "DelElementToolStripMenuItem";
+ DelElementToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.D;
+ DelElementToolStripMenuItem.Size = new Size(180, 22);
+ DelElementToolStripMenuItem.Text = "Удалить";
+ DelElementToolStripMenuItem.Click += DelElementToolStripMenuItem_Click;
+ //
+ // DocsToolStripMenuItem
+ //
+ DocsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { SimpleDocToolStripMenuItem, TableDocToolStripMenuItem, ChartDocToolStripMenuItem });
+ DocsToolStripMenuItem.Name = "DocsToolStripMenuItem";
+ DocsToolStripMenuItem.Size = new Size(82, 20);
+ DocsToolStripMenuItem.Text = "Документы";
+ //
+ // SimpleDocToolStripMenuItem
+ //
+ SimpleDocToolStripMenuItem.Name = "SimpleDocToolStripMenuItem";
+ SimpleDocToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.S;
+ SimpleDocToolStripMenuItem.Size = new Size(233, 22);
+ SimpleDocToolStripMenuItem.Text = "Простой документ";
+ SimpleDocToolStripMenuItem.Click += SimpleDocToolStripMenuItem_Click;
+ //
+ // TableDocToolStripMenuItem
+ //
+ TableDocToolStripMenuItem.Name = "TableDocToolStripMenuItem";
+ TableDocToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.T;
+ TableDocToolStripMenuItem.Size = new Size(233, 22);
+ TableDocToolStripMenuItem.Text = "Документ с таблицой";
+ TableDocToolStripMenuItem.Click += TableDocToolStripMenuItem_Click;
+ //
+ // ChartDocToolStripMenuItem
+ //
+ ChartDocToolStripMenuItem.Name = "ChartDocToolStripMenuItem";
+ ChartDocToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.C;
+ ChartDocToolStripMenuItem.Size = new Size(233, 22);
+ ChartDocToolStripMenuItem.Text = "Круговая диаграмма";
+ ChartDocToolStripMenuItem.Click += ChartDocToolStripMenuItem_Click;
+ //
+ // panelControl
+ //
+ panelControl.Dock = DockStyle.Fill;
+ panelControl.Location = new Point(0, 24);
+ panelControl.Name = "panelControl";
+ panelControl.Size = new Size(800, 426);
+ panelControl.TabIndex = 1;
+ //
+ // FormMain
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(800, 450);
+ Controls.Add(panelControl);
+ Controls.Add(menuStrip);
+ MainMenuStrip = menuStrip;
+ Name = "FormMain";
+ StartPosition = FormStartPosition.CenterScreen;
+ Text = "Главная форма";
+ WindowState = FormWindowState.Maximized;
+ KeyDown += FormMain_KeyDown;
+ menuStrip.ResumeLayout(false);
+ menuStrip.PerformLayout();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem ControlsStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem DocsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem SimpleDocToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem TableDocToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem ChartDocToolStripMenuItem;
+ private System.Windows.Forms.Panel panelControl;
+ private System.Windows.Forms.ToolStripMenuItem ActionsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem ThesaurusToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem AddElementToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem UpdElementToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem DelElementToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/WinFormsProject/WinFormsAppByPlugins/FormMain.cs b/WinFormsProject/WinFormsAppByPlugins/FormMain.cs
new file mode 100644
index 0000000..4fd4907
--- /dev/null
+++ b/WinFormsProject/WinFormsAppByPlugins/FormMain.cs
@@ -0,0 +1,229 @@
+using Contracts.StorageContracts;
+using PluginsConventionLibrary;
+using System.Reflection;
+
+namespace WinFormsAppByPlugins
+{
+ public partial class FormMain : Form
+ {
+ private readonly Dictionary _plugins;
+ private string _selectedPlugin;
+
+ public FormMain()
+ {
+ InitializeComponent();
+ _plugins = new();
+ LoadPlugins();
+ _selectedPlugin = string.Empty;
+ }
+
+ private void LoadPlugins()
+ {
+ List pluginsList = GetPlugins();
+
+ foreach (var plugin in pluginsList)
+ {
+ _plugins[plugin.PluginName] = plugin;
+ CreateMenuItem(plugin.PluginName);
+ }
+ }
+
+ private List GetPlugins()
+ {
+ string currentDir = Environment.CurrentDirectory;
+ string pluginsDir = Directory.GetParent(currentDir).Parent.Parent.Parent.FullName + "\\Plugins"; //
+ string[] dllFiles = Directory.GetFiles( // -
+ pluginsDir,
+ "*.dll",
+ SearchOption.AllDirectories
+ );
+ List plugins = new();
+ foreach (string dllFile in dllFiles)
+ {
+ try
+ {
+ Assembly assembly = Assembly.LoadFrom(dllFile); // dll
+ Type[] types = assembly.GetTypes(); // , .. , .. dll
+ foreach (Type type in types) //
+ {
+ if (typeof(IPluginsConvention).IsAssignableFrom(type) && !type.IsInterface) // IPluginsConvention( )
+ {
+ if (Activator.CreateInstance(type) is IPluginsConvention plugin) // ( )
+ {
+ plugins.Add(plugin); //
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(
+ ex.Message
+ );
+ }
+ }
+ return plugins;
+ }
+
+ private void CreateMenuItem(string pluginName)
+ {
+ ToolStripMenuItem menuItem = new(pluginName);
+ menuItem.Click += (object? sender, EventArgs e) =>
+ {
+ UserControl userControl = _plugins[pluginName].GetControl;
+ if (userControl != null)
+ {
+ panelControl.Controls.Clear();
+ userControl.Dock = DockStyle.Fill;
+ _plugins[pluginName].ReloadData();
+ _selectedPlugin = pluginName;
+ panelControl.Controls.Add(userControl);
+ }
+ };
+ ControlsStripMenuItem.DropDownItems.Add(menuItem);
+ }
+
+ private void FormMain_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (string.IsNullOrEmpty(_selectedPlugin) ||
+ !_plugins.ContainsKey(_selectedPlugin))
+ {
+ return;
+ }
+ if (!e.Control)
+ {
+ return;
+ }
+ switch (e.KeyCode)
+ {
+ case Keys.I:
+ ShowThesaurus();
+ break;
+ case Keys.A:
+ AddNewElement();
+ break;
+ case Keys.U:
+ UpdateElement();
+ break;
+ case Keys.D:
+ DeleteElement();
+ break;
+ case Keys.S:
+ CreateSimpleDoc();
+ break;
+ case Keys.T:
+ CreateTableDoc();
+ break;
+ case Keys.C:
+ CreateChartDoc();
+ break;
+ }
+ }
+
+ private void ShowThesaurus()
+ {
+ _plugins[_selectedPlugin].GetThesaurus()?.Show();
+ }
+
+ private void AddNewElement()
+ {
+ var form = _plugins[_selectedPlugin].GetForm(null);
+ if (form != null && form.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].ReloadData();
+ }
+ }
+
+ private void UpdateElement()
+ {
+ var element = _plugins[_selectedPlugin].GetElement;
+ if (element == null)
+ {
+ MessageBox.Show(
+ " ",
+ "",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Error
+ );
+ return;
+ }
+ var form = _plugins[_selectedPlugin].GetForm(element);
+ if (form != null && form.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].ReloadData();
+ }
+ }
+
+ private void DeleteElement()
+ {
+ if (MessageBox.Show(
+ " ?",
+ "",
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question) != DialogResult.Yes)
+ {
+ return;
+ }
+ var element = _plugins[_selectedPlugin].GetElement;
+ if (element == null)
+ {
+ MessageBox.Show(
+ " ",
+ "",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Error
+ );
+ return;
+ }
+ if (_plugins[_selectedPlugin].DeleteElement(element))
+ {
+ _plugins[_selectedPlugin].ReloadData();
+ }
+ }
+
+ private void CreateSimpleDoc()
+ {
+ SaveFileDialog saveFileDialog = new()
+ {
+ Filter = "Word Files|*.docx"
+ };
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].CreateWordDocument(new PluginsConventionSaveDocument() { FileName = saveFileDialog.FileName });
+
+ }
+ }
+ private void CreateTableDoc()
+ {
+ SaveFileDialog saveFileDialog = new()
+ {
+ Filter = "PDF Files|*.pdf"
+ };
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].CreateTableDocument(new PluginsConventionSaveDocument() { FileName = saveFileDialog.FileName });
+
+ }
+ }
+ private void CreateChartDoc()
+ {
+ SaveFileDialog saveFileDialog = new()
+ {
+ Filter = "Excel Files|*.xlsx"
+ };
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ _plugins[_selectedPlugin].CreateChartDocument(new PluginsConventionSaveDocument() { FileName = saveFileDialog.FileName });
+ }
+ }
+
+ private void ThesaurusToolStripMenuItem_Click(object sender, EventArgs e) => ShowThesaurus();
+ private void AddElementToolStripMenuItem_Click(object sender, EventArgs e) => AddNewElement();
+ private void UpdElementToolStripMenuItem_Click(object sender, EventArgs e) => UpdateElement();
+ private void DelElementToolStripMenuItem_Click(object sender, EventArgs e) => DeleteElement();
+ private void SimpleDocToolStripMenuItem_Click(object sender, EventArgs e) => CreateSimpleDoc();
+ private void TableDocToolStripMenuItem_Click(object sender, EventArgs e) => CreateTableDoc();
+ private void ChartDocToolStripMenuItem_Click(object sender, EventArgs e) => CreateChartDoc();
+
+ }
+}
\ No newline at end of file
diff --git a/WinFormsProject/WinFormsAppByPlugins/FormMain.resx b/WinFormsProject/WinFormsAppByPlugins/FormMain.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/WinFormsProject/WinFormsAppByPlugins/FormMain.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/WinFormsProject/WinFormsAppByPlugins/Program.cs b/WinFormsProject/WinFormsAppByPlugins/Program.cs
new file mode 100644
index 0000000..24ce584
--- /dev/null
+++ b/WinFormsProject/WinFormsAppByPlugins/Program.cs
@@ -0,0 +1,17 @@
+namespace WinFormsAppByPlugins
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ // To customize application configuration such as set high DPI settings or default font,
+ // see https://aka.ms/applicationconfiguration.
+ ApplicationConfiguration.Initialize();
+ Application.Run(new FormMain());
+ }
+ }
+}
\ No newline at end of file
diff --git a/WinFormsProject/WinFormsAppByPlugins/WinFormsAppByPlugins.csproj b/WinFormsProject/WinFormsAppByPlugins/WinFormsAppByPlugins.csproj
new file mode 100644
index 0000000..8c2f882
--- /dev/null
+++ b/WinFormsProject/WinFormsAppByPlugins/WinFormsAppByPlugins.csproj
@@ -0,0 +1,15 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ enable
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WinFormsProject/WinFormsProject.sln b/WinFormsProject/WinFormsProject.sln
index f05fbb7..71329e7 100644
--- a/WinFormsProject/WinFormsProject.sln
+++ b/WinFormsProject/WinFormsProject.sln
@@ -15,6 +15,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DateBaseImplement", "DateBa
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppView", "AppView\AppView.csproj", "{294B81DD-546F-40AD-9BCE-0F51F1D17D1A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsAppByPlugins", "WinFormsAppByPlugins\WinFormsAppByPlugins.csproj", "{30A92893-83E6-4BB4-94B4-1C4B63C4D34D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginsConventionLibrary", "PluginsConventionLibrary\PluginsConventionLibrary.csproj", "{82A002B5-7103-462D-9415-DC56CB552353}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -45,6 +49,14 @@ Global
{294B81DD-546F-40AD-9BCE-0F51F1D17D1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{294B81DD-546F-40AD-9BCE-0F51F1D17D1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{294B81DD-546F-40AD-9BCE-0F51F1D17D1A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {30A92893-83E6-4BB4-94B4-1C4B63C4D34D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {30A92893-83E6-4BB4-94B4-1C4B63C4D34D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {30A92893-83E6-4BB4-94B4-1C4B63C4D34D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {30A92893-83E6-4BB4-94B4-1C4B63C4D34D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {82A002B5-7103-462D-9415-DC56CB552353}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {82A002B5-7103-462D-9415-DC56CB552353}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {82A002B5-7103-462D-9415-DC56CB552353}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {82A002B5-7103-462D-9415-DC56CB552353}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE