diff --git a/ComponentProgramming/ComponentProgramming/ComponentProgramming.csproj b/ComponentProgramming/ComponentProgramming/ComponentProgramming.csproj index 3e210aa..f0d4be0 100644 --- a/ComponentProgramming/ComponentProgramming/ComponentProgramming.csproj +++ b/ComponentProgramming/ComponentProgramming/ComponentProgramming.csproj @@ -7,4 +7,8 @@ enable + + + + diff --git a/ComponentProgramming/ComponentProgramming/Components/testComp.Designer.cs b/ComponentProgramming/ComponentProgramming/Components/testComp.Designer.cs new file mode 100644 index 0000000..1e9a77b --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/Components/testComp.Designer.cs @@ -0,0 +1,36 @@ +namespace ComponentProgramming +{ + partial class testComp + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/ComponentProgramming/ComponentProgramming/Components/testComp.cs b/ComponentProgramming/ComponentProgramming/Components/testComp.cs new file mode 100644 index 0000000..e30d048 --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/Components/testComp.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComponentProgramming +{ + public partial class testComp : Component + { + + private string _fileName; + + public string FileName + { + set + { + if (string.IsNullOrEmpty(value)) return; + if (!value.EndsWith(".txt")) + { + throw new ArgumentException("No txt file"); + } + _fileName = value; + } + } + + public testComp() + { + InitializeComponent(); + _fileName = string.Empty; + } + + public testComp(IContainer container) + { + container.Add(this); + + InitializeComponent(); + _fileName = string.Empty; + } + + public bool saveToFile(string[] texts) + { + CheckFileExist(); + using var writer = new StreamWriter(_fileName, true); + foreach (var text in texts) + { + writer.WriteLine(text); + } + writer.Flush(); + return true; + } + + private void CheckFileExist() + { + if (string.IsNullOrEmpty(_fileName)) + { + throw new ArgumentNullException(_fileName); + } + if(!File.Exists("../"+_fileName)) + { + throw new FileNotFoundException(_fileName); + } + } + } +} diff --git a/ComponentProgramming/ComponentProgramming/ControlComboBox.Designer.cs b/ComponentProgramming/ComponentProgramming/Control/ControlComboBox.Designer.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlComboBox.Designer.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlComboBox.Designer.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlComboBox.cs b/ComponentProgramming/ComponentProgramming/Control/ControlComboBox.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlComboBox.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlComboBox.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlComboBox.resx b/ComponentProgramming/ComponentProgramming/Control/ControlComboBox.resx similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlComboBox.resx rename to ComponentProgramming/ComponentProgramming/Control/ControlComboBox.resx diff --git a/ComponentProgramming/ComponentProgramming/ControlImage.Designer.cs b/ComponentProgramming/ComponentProgramming/Control/ControlImage.Designer.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlImage.Designer.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlImage.Designer.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlImage.cs b/ComponentProgramming/ComponentProgramming/Control/ControlImage.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlImage.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlImage.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlImage.resx b/ComponentProgramming/ComponentProgramming/Control/ControlImage.resx similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlImage.resx rename to ComponentProgramming/ComponentProgramming/Control/ControlImage.resx diff --git a/ComponentProgramming/ComponentProgramming/ControlListBox.Designer.cs b/ComponentProgramming/ComponentProgramming/Control/ControlListBox.Designer.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlListBox.Designer.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlListBox.Designer.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlListBox.cs b/ComponentProgramming/ComponentProgramming/Control/ControlListBox.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlListBox.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlListBox.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlListBox.resx b/ComponentProgramming/ComponentProgramming/Control/ControlListBox.resx similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlListBox.resx rename to ComponentProgramming/ComponentProgramming/Control/ControlListBox.resx diff --git a/ComponentProgramming/ComponentProgramming/ControlTextBox.Designer.cs b/ComponentProgramming/ComponentProgramming/Control/ControlTextBox.Designer.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlTextBox.Designer.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlTextBox.Designer.cs diff --git a/ComponentProgramming/ComponentProgramming/ControlTextBox.cs b/ComponentProgramming/ComponentProgramming/Control/ControlTextBox.cs similarity index 97% rename from ComponentProgramming/ComponentProgramming/ControlTextBox.cs rename to ComponentProgramming/ComponentProgramming/Control/ControlTextBox.cs index 3be207e..31f04a2 100644 --- a/ComponentProgramming/ComponentProgramming/ControlTextBox.cs +++ b/ComponentProgramming/ComponentProgramming/Control/ControlTextBox.cs @@ -1,4 +1,4 @@ -using ComponentProgramming.Exceptions; +using ComponentProgramming.Control.Exceptions; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/ComponentProgramming/ComponentProgramming/ControlTextBox.resx b/ComponentProgramming/ComponentProgramming/Control/ControlTextBox.resx similarity index 100% rename from ComponentProgramming/ComponentProgramming/ControlTextBox.resx rename to ComponentProgramming/ComponentProgramming/Control/ControlTextBox.resx diff --git a/ComponentProgramming/ComponentProgramming/Exceptions/NumberException.cs b/ComponentProgramming/ComponentProgramming/Control/Exceptions/NumberException.cs similarity index 85% rename from ComponentProgramming/ComponentProgramming/Exceptions/NumberException.cs rename to ComponentProgramming/ComponentProgramming/Control/Exceptions/NumberException.cs index fed8d3c..94d6ba1 100644 --- a/ComponentProgramming/ComponentProgramming/Exceptions/NumberException.cs +++ b/ComponentProgramming/ComponentProgramming/Control/Exceptions/NumberException.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace ComponentProgramming.Exceptions +namespace ComponentProgramming.Control.Exceptions { public class NumberException : Exception { diff --git a/ComponentProgramming/ComponentProgramming/Person.cs b/ComponentProgramming/ComponentProgramming/Control/Person.cs similarity index 78% rename from ComponentProgramming/ComponentProgramming/Person.cs rename to ComponentProgramming/ComponentProgramming/Control/Person.cs index e1e44af..feaeacc 100644 --- a/ComponentProgramming/ComponentProgramming/Person.cs +++ b/ComponentProgramming/ComponentProgramming/Control/Person.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Forms +namespace ComponentProgramming.Control { public class Person { @@ -14,8 +14,8 @@ namespace Forms public Person() { } - public Person(int id, string name, string surname) - { + public Person(int id, string name, string surname) + { Name = name; Id = id; Surname = surname; diff --git a/ComponentProgramming/ComponentProgramming/LargeTextComponent.Designer.cs b/ComponentProgramming/ComponentProgramming/LargeTextComponent.Designer.cs new file mode 100644 index 0000000..fe4420b --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/LargeTextComponent.Designer.cs @@ -0,0 +1,36 @@ +namespace ComponentProgramming.Components +{ + partial class LargeTextComponent + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/ComponentProgramming/ComponentProgramming/LargeTextComponent.cs b/ComponentProgramming/ComponentProgramming/LargeTextComponent.cs new file mode 100644 index 0000000..059638a --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/LargeTextComponent.cs @@ -0,0 +1,63 @@ +using System.ComponentModel; +using MigraDoc.DocumentObjectModel; +using MigraDoc.DocumentObjectModel.Tables; +using MigraDoc.Rendering; + +namespace ComponentProgramming.Components +{ + public partial class LargeTextComponent : Component + { + + private Document? _document; + + private Section? _section; + + public LargeTextComponent() + { + InitializeComponent(); + } + + public LargeTextComponent(IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + + public void CreateDocument(string docPath, string title, string[] rows) + { + if(string.IsNullOrEmpty(docPath)) + { + throw new ArgumentNullException("Введите путь до файла!"); + } + if(string.IsNullOrEmpty(title)) + { + throw new ArgumentNullException("Введите заголовок"); + } + if(rows.Length <= 0) + { + throw new ArgumentNullException("Нету данных для сохранения"); + } + + _document = new Document(); + var style = _document.Styles["Normal"]; + style.Font.Name = "Times New Roman"; + style.Font.Size = 14; + + _section = _document.AddSection(); + + var paragraph = _section.AddParagraph(title); + paragraph.Format.SpaceAfter = "0.1cm"; + paragraph.Format.Font.Bold = true; + foreach (var row in rows) + { + _section.AddParagraph(row); + } + + var renderer = new PdfDocumentRenderer(true); + renderer.Document = _document; + renderer.RenderDocument(); + renderer.PdfDocument.Save(docPath); + } + } +} diff --git a/ComponentProgramming/Forms/Form.Designer.cs b/ComponentProgramming/Forms/Form.Designer.cs index 9fab22f..4c974aa 100644 --- a/ComponentProgramming/Forms/Form.Designer.cs +++ b/ComponentProgramming/Forms/Form.Designer.cs @@ -28,13 +28,13 @@ /// private void InitializeComponent() { + components = new System.ComponentModel.Container(); controlComboBox = new ComponentProgramming.ControlComboBox(); controlTextBox = new ComponentProgramming.ControlTextBox(); buttonGetObj = new Button(); - buttonClear = new Button(); buttonEnter = new Button(); - buttonAdd = new Button(); controlListBox = new ComponentProgramming.ControlListBox(); + largeTextComponent = new ComponentProgramming.Components.LargeTextComponent(components); SuspendLayout(); // // controlComboBox @@ -58,7 +58,7 @@ // // buttonGetObj // - buttonGetObj.Location = new Point(23, 415); + buttonGetObj.Location = new Point(12, 415); buttonGetObj.Name = "buttonGetObj"; buttonGetObj.Size = new Size(126, 23); buttonGetObj.TabIndex = 3; @@ -66,16 +66,6 @@ buttonGetObj.UseVisualStyleBackColor = true; buttonGetObj.Click += buttonGetObj_Click; // - // buttonClear - // - buttonClear.Location = new Point(654, 415); - buttonClear.Name = "buttonClear"; - buttonClear.Size = new Size(134, 26); - buttonClear.TabIndex = 4; - buttonClear.Text = "Очистить объекты"; - buttonClear.UseVisualStyleBackColor = true; - buttonClear.Click += buttonClear_Click; - // // buttonEnter // buttonEnter.Location = new Point(272, 36); @@ -87,34 +77,21 @@ buttonEnter.UseVisualStyleBackColor = true; buttonEnter.Click += buttonEnter_Click; // - // buttonAdd - // - buttonAdd.Location = new Point(331, 415); - buttonAdd.Margin = new Padding(3, 2, 3, 2); - buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(147, 23); - buttonAdd.TabIndex = 6; - buttonAdd.Text = "Добавить значение"; - buttonAdd.UseVisualStyleBackColor = true; - buttonAdd.Click += buttonAdd_Click; - // // controlListBox // controlListBox.GetIndex = -1; controlListBox.Location = new Point(12, 65); controlListBox.Name = "controlListBox"; - controlListBox.Size = new Size(776, 344); + controlListBox.Size = new Size(334, 344); controlListBox.TabIndex = 7; // // Form // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); + ClientSize = new Size(759, 450); Controls.Add(controlListBox); - Controls.Add(buttonAdd); Controls.Add(buttonEnter); - Controls.Add(buttonClear); Controls.Add(buttonGetObj); Controls.Add(controlTextBox); Controls.Add(controlComboBox); @@ -129,9 +106,8 @@ private ComponentProgramming.ControlComboBox controlComboBox; private ComponentProgramming.ControlTextBox controlTextBox; private Button buttonGetObj; - private Button buttonClear; private Button buttonEnter; - private Button buttonAdd; private ComponentProgramming.ControlListBox controlListBox; + private ComponentProgramming.Components.LargeTextComponent largeTextComponent; } } diff --git a/ComponentProgramming/Forms/Form.cs b/ComponentProgramming/Forms/Form.cs index f4f889f..f212d5e 100644 --- a/ComponentProgramming/Forms/Form.cs +++ b/ComponentProgramming/Forms/Form.cs @@ -8,6 +8,8 @@ namespace Forms FillBox(); FillTextBox(); FillList(); + string[] strings = new string[] { " , ( )", " ( ) ( )" }; + largeTextComponent.CreateDocument("C:\\Users\\shotb\\source\\repos\\KOP\\ComponentProgramming\\Forms\\text.pdf", "", strings); } private void FillBox() @@ -53,21 +55,10 @@ namespace Forms var obj = controlListBox.GetSelectedObject(); MessageBox.Show($"{obj.Name} {obj.Surname}"); } - - private void buttonClear_Click(object sender, EventArgs e) - { - //controlDataGrid.ClearData(); - } - private void buttonEnter_Click(object sender, EventArgs e) { var val = controlTextBox.text; MessageBox.Show($" {val}"); } - - private void buttonAdd_Click(object sender, EventArgs e) - { - //controlDataGrid.SetData(new Person(1, "asdasdas", "asdasd1asd"), 2, 3); - } } } diff --git a/ComponentProgramming/Forms/Form.resx b/ComponentProgramming/Forms/Form.resx index af32865..d491498 100644 --- a/ComponentProgramming/Forms/Form.resx +++ b/ComponentProgramming/Forms/Form.resx @@ -117,4 +117,7 @@ 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/ComponentProgramming/Forms/Forms.csproj b/ComponentProgramming/Forms/Forms.csproj index 812d01e..212408f 100644 --- a/ComponentProgramming/Forms/Forms.csproj +++ b/ComponentProgramming/Forms/Forms.csproj @@ -8,6 +8,10 @@ enable + + + + diff --git a/ComponentProgramming/Forms/text.pdf b/ComponentProgramming/Forms/text.pdf new file mode 100644 index 0000000..0368d11 Binary files /dev/null and b/ComponentProgramming/Forms/text.pdf differ