From cbdf90f3eee725a88d5e6c67f510461bfee71498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BE=D0=BB=D0=BE=D0=B4=D1=8F?= Date: Wed, 27 Sep 2023 12:07:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=B0=D0=B11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VisEl/KOP.sln | 6 + VisEl/Test/Form1.Designer.cs | 126 ++++++++++++------ VisEl/Test/Form1.cs | 31 ++++- VisEl/Test/Form1.resx | 3 + VisEl/Test/Lab2.Designer.cs | 39 ++++++ VisEl/Test/Lab2.cs | 20 +++ VisEl/Test/Test.csproj | 6 + VisEl/Test/TestClasses/Sportsmen.cs | 5 + VisEl/UnvisualComponents/ImageExcel.cs | 12 ++ .../UnvisualComponents.csproj | 9 ++ VisEl/VisEl/MyCheckList.cs | 13 ++ VisEl/VisEl/MyTextBoxDate.Designer.cs | 11 -- VisEl/VisEl/MyTextBoxDate.cs | 65 ++++++--- VisEl/VisEl/MyTreeView.cs | 60 +++++---- VisEl/VisEl/VisEl.csproj | 1 + 15 files changed, 302 insertions(+), 105 deletions(-) create mode 100644 VisEl/Test/Lab2.Designer.cs create mode 100644 VisEl/Test/Lab2.cs create mode 100644 VisEl/UnvisualComponents/ImageExcel.cs create mode 100644 VisEl/UnvisualComponents/UnvisualComponents.csproj diff --git a/VisEl/KOP.sln b/VisEl/KOP.sln index c9dc252..9b57c0c 100644 --- a/VisEl/KOP.sln +++ b/VisEl/KOP.sln @@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisEl", "VisEl\VisEl.csproj EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{D173D582-D0AE-45DF-88FC-0DE0A8183E82}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnvisualComponents", "UnvisualComponents\UnvisualComponents.csproj", "{1AFA08FF-CCF8-46DE-8980-D5C42B313267}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +23,10 @@ Global {D173D582-D0AE-45DF-88FC-0DE0A8183E82}.Debug|Any CPU.Build.0 = Debug|Any CPU {D173D582-D0AE-45DF-88FC-0DE0A8183E82}.Release|Any CPU.ActiveCfg = Release|Any CPU {D173D582-D0AE-45DF-88FC-0DE0A8183E82}.Release|Any CPU.Build.0 = Release|Any CPU + {1AFA08FF-CCF8-46DE-8980-D5C42B313267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1AFA08FF-CCF8-46DE-8980-D5C42B313267}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AFA08FF-CCF8-46DE-8980-D5C42B313267}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1AFA08FF-CCF8-46DE-8980-D5C42B313267}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/VisEl/Test/Form1.Designer.cs b/VisEl/Test/Form1.Designer.cs index 5373158..acdfd5c 100644 --- a/VisEl/Test/Form1.Designer.cs +++ b/VisEl/Test/Form1.Designer.cs @@ -45,15 +45,20 @@ this.labelChecked = new System.Windows.Forms.Label(); this.buttonStart = new System.Windows.Forms.Button(); this.comboBox1 = new System.Windows.Forms.ComboBox(); - this.myTreeView1 = new VisEl.MyTreeView(); - this.myTextBoxDate = new VisEl.MyTextBoxDate(); - this.newCheckList1 = new VisEl.MyCheckList(); this.buttonAddHier = new System.Windows.Forms.Button(); this.labelHier = new System.Windows.Forms.Label(); this.listBox1 = new System.Windows.Forms.ListBox(); this.buttonGen = new System.Windows.Forms.Button(); this.buttonTakeNode = new System.Windows.Forms.Button(); this.labelNode = new System.Windows.Forms.Label(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.lab2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.labelChange = new System.Windows.Forms.Label(); + this.labelDateChange = new System.Windows.Forms.Label(); + this.myTreeView1 = new VisEl.MyTreeView(); + this.newCheckList1 = new VisEl.MyCheckList(); + this.myTextBoxDate = new VisEl.MyTextBoxDate(); + this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // // textBoxList @@ -176,7 +181,7 @@ // labelTitle // this.labelTitle.AutoSize = true; - this.labelTitle.Location = new System.Drawing.Point(428, 286); + this.labelTitle.Location = new System.Drawing.Point(394, 286); this.labelTitle.Name = "labelTitle"; this.labelTitle.Size = new System.Drawing.Size(88, 16); this.labelTitle.TabIndex = 15; @@ -203,42 +208,11 @@ // comboBox1 // this.comboBox1.FormattingEnabled = true; - this.comboBox1.Location = new System.Drawing.Point(525, 412); + this.comboBox1.Location = new System.Drawing.Point(517, 432); this.comboBox1.Name = "comboBox1"; this.comboBox1.Size = new System.Drawing.Size(121, 24); this.comboBox1.TabIndex = 19; // - // myTreeView1 - // - this.myTreeView1.AutoSize = true; - this.myTreeView1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.myTreeView1.BackColor = System.Drawing.SystemColors.ControlDark; - this.myTreeView1.Location = new System.Drawing.Point(12, 412); - this.myTreeView1.Name = "myTreeView1"; - this.myTreeView1.Size = new System.Drawing.Size(427, 403); - this.myTreeView1.TabIndex = 17; - // - // myTextBoxDate - // - this.myTextBoxDate.DateMaximum = new System.DateTime(2025, 12, 31, 0, 0, 0, 0); - this.myTextBoxDate.DateMinimum = new System.DateTime(2000, 1, 1, 0, 0, 0, 0); - this.myTextBoxDate.Location = new System.Drawing.Point(31, 286); - this.myTextBoxDate.Name = "myTextBoxDate"; - this.myTextBoxDate.Size = new System.Drawing.Size(316, 150); - this.myTextBoxDate.TabIndex = 11; - this.myTextBoxDate.Value = "13.09.2023"; - // - // newCheckList1 - // - this.newCheckList1.AutoSize = true; - this.newCheckList1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.newCheckList1.BackColor = System.Drawing.SystemColors.ActiveBorder; - this.newCheckList1.Location = new System.Drawing.Point(31, 12); - this.newCheckList1.Name = "newCheckList1"; - this.newCheckList1.selectedValue = ""; - this.newCheckList1.Size = new System.Drawing.Size(285, 248); - this.newCheckList1.TabIndex = 0; - // // buttonAddHier // this.buttonAddHier.Location = new System.Drawing.Point(678, 412); @@ -294,11 +268,80 @@ this.labelNode.Size = new System.Drawing.Size(0, 16); this.labelNode.TabIndex = 25; // + // menuStrip1 + // + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lab2ToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(800, 28); + this.menuStrip1.TabIndex = 26; + this.menuStrip1.Text = "menuStrip1"; + // + // lab2ToolStripMenuItem + // + this.lab2ToolStripMenuItem.Name = "lab2ToolStripMenuItem"; + this.lab2ToolStripMenuItem.Size = new System.Drawing.Size(55, 24); + this.lab2ToolStripMenuItem.Text = "Lab2"; + this.lab2ToolStripMenuItem.Click += new System.EventHandler(this.lab2ToolStripMenuItem_Click); + // + // labelChange + // + this.labelChange.AutoSize = true; + this.labelChange.ForeColor = System.Drawing.Color.Red; + this.labelChange.Location = new System.Drawing.Point(336, 128); + this.labelChange.Name = "labelChange"; + this.labelChange.Size = new System.Drawing.Size(0, 16); + this.labelChange.TabIndex = 27; + // + // labelDateChange + // + this.labelDateChange.AutoSize = true; + this.labelDateChange.Location = new System.Drawing.Point(22, 419); + this.labelDateChange.Name = "labelDateChange"; + this.labelDateChange.Size = new System.Drawing.Size(0, 16); + this.labelDateChange.TabIndex = 28; + // + // myTreeView1 + // + this.myTreeView1.AutoSize = true; + this.myTreeView1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.myTreeView1.BackColor = System.Drawing.SystemColors.ControlDark; + this.myTreeView1.Location = new System.Drawing.Point(13, 442); + this.myTreeView1.Name = "myTreeView1"; + this.myTreeView1.Size = new System.Drawing.Size(427, 403); + this.myTreeView1.TabIndex = 17; + // + // newCheckList1 + // + this.newCheckList1.AutoSize = true; + this.newCheckList1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.newCheckList1.BackColor = System.Drawing.SystemColors.ActiveBorder; + this.newCheckList1.Location = new System.Drawing.Point(12, 32); + this.newCheckList1.Name = "newCheckList1"; + this.newCheckList1.selectedValue = ""; + this.newCheckList1.Size = new System.Drawing.Size(285, 248); + this.newCheckList1.TabIndex = 0; + // + // myTextBoxDate + // + this.myTextBoxDate.DateMaximum = null; + this.myTextBoxDate.DateMinimum = null; + this.myTextBoxDate.Location = new System.Drawing.Point(20, 286); + this.myTextBoxDate.Name = "myTextBoxDate"; + this.myTextBoxDate.Size = new System.Drawing.Size(316, 95); + this.myTextBoxDate.TabIndex = 29; + this.myTextBoxDate.Value = null; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 867); + this.Controls.Add(this.myTextBoxDate); + this.Controls.Add(this.labelDateChange); + this.Controls.Add(this.labelChange); this.Controls.Add(this.labelNode); this.Controls.Add(this.buttonTakeNode); this.Controls.Add(this.buttonGen); @@ -313,7 +356,6 @@ this.Controls.Add(this.buttonGiveTime); this.Controls.Add(this.buttonTakeTime); this.Controls.Add(this.dateTimePicker); - this.Controls.Add(this.myTextBoxDate); this.Controls.Add(this.buttonReplace); this.Controls.Add(this.buttonTake); this.Controls.Add(this.textBoxTakeValue); @@ -325,8 +367,12 @@ this.Controls.Add(this.labelList); this.Controls.Add(this.textBoxList); this.Controls.Add(this.newCheckList1); + this.Controls.Add(this.menuStrip1); + this.MainMenuStrip = this.menuStrip1; this.Name = "Form1"; this.Text = "Form1"; + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -345,7 +391,6 @@ private System.Windows.Forms.TextBox textBoxTakeValue; private System.Windows.Forms.Button buttonTake; private System.Windows.Forms.Button buttonReplace; - private VisEl.MyTextBoxDate myTextBoxDate; private System.Windows.Forms.DateTimePicker dateTimePicker; private System.Windows.Forms.Button buttonTakeTime; private System.Windows.Forms.Button buttonGiveTime; @@ -360,6 +405,11 @@ private System.Windows.Forms.Button buttonGen; private System.Windows.Forms.Button buttonTakeNode; private System.Windows.Forms.Label labelNode; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem lab2ToolStripMenuItem; + private System.Windows.Forms.Label labelChange; + private System.Windows.Forms.Label labelDateChange; + private VisEl.MyTextBoxDate myTextBoxDate; } } diff --git a/VisEl/Test/Form1.cs b/VisEl/Test/Form1.cs index 186f706..dad6497 100644 --- a/VisEl/Test/Form1.cs +++ b/VisEl/Test/Form1.cs @@ -30,6 +30,19 @@ namespace Test InitializeComponent(); comboBox1.Items.AddRange(typeof(Sportsmen).GetFields().Select(x => x.Name).ToArray()); comboBox1.Items.AddRange(typeof(Sportsmen).GetProperties().Select(x => x.Name).ToArray()); + myTextBoxDate.DateMax = new DateTime(2019, 12, 1); + myTextBoxDate.DateMin = new DateTime(2012, 12, 1); + + newCheckList1.ValueChanged += CustomEvent_Handler; + myTextBoxDate.ValueChanged += CustomEvent_HandlerDate; + } + private void CustomEvent_Handler(object sender, EventArgs e) + { + labelChange.Text = "oп оп я поменялся"; + } + private void CustomEvent_HandlerDate(object sender, EventArgs e) + { + labelDateChange.Text = "Ку-ку"; } private void buttonAdd_Click(object sender, EventArgs e) @@ -64,19 +77,17 @@ namespace Test private void buttonTakeTime_Click(object sender, EventArgs e) { - labelChecked.Text = myTextBoxDate.Value; + labelChecked.Text = myTextBoxDate.Value.ToString(); } private void buttonGiveTime_Click(object sender, EventArgs e) { - myTextBoxDate.Value = dateTimePicker.Value.ToString(); + myTextBoxDate.Value = dateTimePicker.Value; } private void buttonGO_Click(object sender, EventArgs e) { - foreach(string step in stringToHierachy) - myTreeView1.addToHierarchy(step, false); - + myTreeView1.addToHierarchy(stringToHierachy); myTreeView1.LoadTree(sportsmens); labelHier.Text = ""; stringToHierachy.Clear(); @@ -106,7 +117,15 @@ namespace Test private void buttonTakeNode_Click(object sender, EventArgs e) { - labelNode.Text = myTreeView1.GetNode(); + var f = typeof(Sportsmen); + var res = myTreeView1.GetNode(typeof(Sportsmen)); + labelNode.Text = res.ToString(); + } + + private void lab2ToolStripMenuItem_Click(object sender, EventArgs e) + { + Lab2 lab2 = new Lab2(); + lab2.Show(); } } } diff --git a/VisEl/Test/Form1.resx b/VisEl/Test/Form1.resx index 1af7de1..d5494e3 100644 --- a/VisEl/Test/Form1.resx +++ b/VisEl/Test/Form1.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/VisEl/Test/Lab2.Designer.cs b/VisEl/Test/Lab2.Designer.cs new file mode 100644 index 0000000..fcc7616 --- /dev/null +++ b/VisEl/Test/Lab2.Designer.cs @@ -0,0 +1,39 @@ +namespace Test +{ + partial class Lab2 + { + /// + /// 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() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "Lab2"; + } + + #endregion + } +} \ No newline at end of file diff --git a/VisEl/Test/Lab2.cs b/VisEl/Test/Lab2.cs new file mode 100644 index 0000000..9da8b84 --- /dev/null +++ b/VisEl/Test/Lab2.cs @@ -0,0 +1,20 @@ +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; + +namespace Test +{ + public partial class Lab2 : Form + { + public Lab2() + { + InitializeComponent(); + } + } +} diff --git a/VisEl/Test/Test.csproj b/VisEl/Test/Test.csproj index 3fbac2b..04cfae6 100644 --- a/VisEl/Test/Test.csproj +++ b/VisEl/Test/Test.csproj @@ -52,6 +52,12 @@ Form1.cs + + Form + + + Lab2.cs + diff --git a/VisEl/Test/TestClasses/Sportsmen.cs b/VisEl/Test/TestClasses/Sportsmen.cs index 94fcd3c..3f3361e 100644 --- a/VisEl/Test/TestClasses/Sportsmen.cs +++ b/VisEl/Test/TestClasses/Sportsmen.cs @@ -22,5 +22,10 @@ namespace TestLib this.country = country; this.awards = awards; } + public Sportsmen() { } + public override string ToString() + { + return country + " " + city + " " + name + " " + sport + " " + awards; + } } } diff --git a/VisEl/UnvisualComponents/ImageExcel.cs b/VisEl/UnvisualComponents/ImageExcel.cs new file mode 100644 index 0000000..563890c --- /dev/null +++ b/VisEl/UnvisualComponents/ImageExcel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnvisualComponents +{ + public class ImageExcel + { + } +} diff --git a/VisEl/UnvisualComponents/UnvisualComponents.csproj b/VisEl/UnvisualComponents/UnvisualComponents.csproj new file mode 100644 index 0000000..132c02c --- /dev/null +++ b/VisEl/UnvisualComponents/UnvisualComponents.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/VisEl/VisEl/MyCheckList.cs b/VisEl/VisEl/MyCheckList.cs index 76a8f8e..e5905bf 100644 --- a/VisEl/VisEl/MyCheckList.cs +++ b/VisEl/VisEl/MyCheckList.cs @@ -12,6 +12,18 @@ namespace VisEl { public partial class MyCheckList : UserControl { + private EventHandler onValueChanged; + public event EventHandler ValueChanged + { + add + { + onValueChanged += value; + } + remove + { + onValueChanged -= value; + } + } public MyCheckList() { InitializeComponent(); @@ -43,6 +55,7 @@ namespace VisEl { Random rn = new Random(); checkedList.BackColor = Color.FromArgb(rn.Next(0,255), rn.Next(0, 255), rn.Next(0, 255)); + onValueChanged?.Invoke(this,e); } } } diff --git a/VisEl/VisEl/MyTextBoxDate.Designer.cs b/VisEl/VisEl/MyTextBoxDate.Designer.cs index 1a7082c..ea5c256 100644 --- a/VisEl/VisEl/MyTextBoxDate.Designer.cs +++ b/VisEl/VisEl/MyTextBoxDate.Designer.cs @@ -29,7 +29,6 @@ private void InitializeComponent() { this.dateTimePicker = new System.Windows.Forms.DateTimePicker(); - this.labelEr = new System.Windows.Forms.Label(); this.labelMin = new System.Windows.Forms.Label(); this.labelMax = new System.Windows.Forms.Label(); this.panel = new System.Windows.Forms.Panel(); @@ -46,14 +45,6 @@ this.dateTimePicker.TabIndex = 0; this.dateTimePicker.ValueChanged += new System.EventHandler(this.dateTimePicker_ValueChanged); // - // labelEr - // - this.labelEr.AutoSize = true; - this.labelEr.Location = new System.Drawing.Point(27, 105); - this.labelEr.Name = "labelEr"; - this.labelEr.Size = new System.Drawing.Size(0, 16); - this.labelEr.TabIndex = 1; - // // labelMin // this.labelMin.AutoSize = true; @@ -87,7 +78,6 @@ this.Controls.Add(this.panel); this.Controls.Add(this.labelMax); this.Controls.Add(this.labelMin); - this.Controls.Add(this.labelEr); this.Name = "MyTextBoxDate"; this.Size = new System.Drawing.Size(316, 150); this.panel.ResumeLayout(false); @@ -99,7 +89,6 @@ #endregion private System.Windows.Forms.DateTimePicker dateTimePicker; - private System.Windows.Forms.Label labelEr; private System.Windows.Forms.Label labelMin; private System.Windows.Forms.Label labelMax; private System.Windows.Forms.Panel panel; diff --git a/VisEl/VisEl/MyTextBoxDate.cs b/VisEl/VisEl/MyTextBoxDate.cs index 87372b4..d863363 100644 --- a/VisEl/VisEl/MyTextBoxDate.cs +++ b/VisEl/VisEl/MyTextBoxDate.cs @@ -1,9 +1,10 @@ -using System; +using Microsoft.Build.Framework; +using System; using System.Collections.Generic; -using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -12,46 +13,65 @@ namespace VisEl { public partial class MyTextBoxDate : UserControl { - public DateTime DateMin = new DateTime(1999, 1, 1); - public DateTime DateMax = new DateTime(2025, 12, 31); + private EventHandler onValueChanged; + public event EventHandler ValueChanged + { + add + { + onValueChanged += value; + } + remove + { + onValueChanged -= value; + } + } + public string TextEr; + public string Err { get { return TextEr; } private set { TextEr = value; } } + public DateTime? DateMin = null; + public DateTime? DateMax = null; public MyTextBoxDate() { InitializeComponent(); - labelMin.Text = DateMin.ToShortDateString(); - labelMax.Text = DateMax.ToShortDateString(); } - public DateTime DateMaximum { - get { return DateMax; } - set { - DateMax = value; - labelMax.Text = DateMax.ToString(); + public DateTime? DateMaximum { + get { return DateMax ; } + set { + + DateMax = value; + } } - public DateTime DateMinimum + public DateTime? DateMinimum { get { return DateMin; } set { - DateMin = value; - labelMin.Text = DateMin.ToString(); + + DateMin = value; + + } } - public string Value + public DateTime? Value { get { + if(DateMin is null || DateMax is null) { + Err = "Ошибка: НЕТ диапазона"; + return null; + } if (dateTimePicker.Value > DateMax || dateTimePicker.Value < DateMin) { - labelEr.ForeColor = Color.Red; - labelEr.Text = "Ошибка: Выход за допустимые пределы!!!"; - return null; } - labelEr.Text = ""; - return dateTimePicker.Value.ToShortDateString(); + Err = "Ошибка: Выход за допустимые пределы!!!"; + return null; + } + return dateTimePicker.Value; } set { - if (DateTime.Parse(value) > DateMax || DateTime.Parse(value) < DateMin) return; - dateTimePicker.Value = DateTime.Parse(value); + if (value == null) return; + if (value > DateMax || value < DateMin) return; + dateTimePicker.Value = (DateTime)value; } } @@ -59,6 +79,7 @@ namespace VisEl { if (dateTimePicker.Value >= DateMinimum && dateTimePicker.Value <= DateMaximum) panel.BackColor = Color.LightBlue; else panel.BackColor = Color.Red; + onValueChanged?.Invoke(this,e); } } } diff --git a/VisEl/VisEl/MyTreeView.cs b/VisEl/VisEl/MyTreeView.cs index 1f6b80c..6f876ec 100644 --- a/VisEl/VisEl/MyTreeView.cs +++ b/VisEl/VisEl/MyTreeView.cs @@ -8,27 +8,45 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using System.Xml.Linq; namespace VisEl { public partial class MyTreeView : UserControl { - List<(string, bool)> hierarchy = new List<(string, bool)>(); + List hierarchy = new List(); public MyTreeView() { InitializeComponent(); } - public void addToHierarchy(string member , bool isolation) { hierarchy.Add((member, isolation)); } + public void addToHierarchy(List list) { hierarchy = list; } public int GetId { - get { return treeView.SelectedNode.Index; } + get { + if(treeView.SelectedNode.FirstNode == null) + return treeView.SelectedNode.Index; + return -1; + } } - public string GetNode() + public object GetNode(T nodeClass) where T: Type { + var res = Activator.CreateInstance(nodeClass); + T child; if (treeView.SelectedNode.FirstNode == null) - return treeView.SelectedNode.Text.ToString(); + { + + TreeNode parent = treeView.SelectedNode; + do + { + if (nodeClass.GetField(parent.Name) == null) + nodeClass.GetProperty(parent.Name).SetValue(res, parent.Text); + else nodeClass.GetField(parent.Name).SetValue(res, parent.Text); + parent = parent.Parent; + } while(parent != null); + return res; + } return null; } public void LoadTree(List nodes) @@ -38,30 +56,23 @@ namespace VisEl { TreeNode parent = null; Type type = node.GetType(); - foreach((string, bool) step in hierarchy) + foreach(string step in hierarchy) { var aa = type.GetFields(); - if (type.GetField(step.Item1) != null || type.GetProperty(step.Item1) != null) + if (type.GetField(step) != null || type.GetProperty(step) != null) { - var value = type.GetField(step.Item1) == null ? type.GetProperty(step.Item1).GetValue(node) : type.GetField(step.Item1).GetValue(node); + var value = type.GetField(step) == null ? type.GetProperty(step).GetValue(node) : type.GetField(step).GetValue(node); TreeNode[] nodesLevel; if (parent == null) { - if (step.Item2) - { - TreeNode newNode = new TreeNode(value.ToString()); - newNode.Name = step.Item1; - treeView.Nodes.Add(newNode); - parent = newNode; - continue; - } - nodesLevel = treeView.Nodes.Find(step.Item1, false); + + nodesLevel = treeView.Nodes.Find(step, false); TreeNode currentNode = nodesLevel.FirstOrDefault(x => x.Text.Equals(value)); if (currentNode is null) { TreeNode newNode = new TreeNode(value.ToString()); - newNode.Name = step.Item1; + newNode.Name = step; treeView.Nodes.Add(newNode); parent = newNode; }else @@ -72,20 +83,13 @@ namespace VisEl } else { - if (step.Item2) - { - TreeNode newNode = new TreeNode(value.ToString()); - newNode.Name = step.Item1; - parent.Nodes.Add(newNode); - parent = newNode; - continue; - } - nodesLevel = parent.Nodes.Find(step.Item1, false); + + nodesLevel = parent.Nodes.Find(step, false); TreeNode currentNode = nodesLevel.FirstOrDefault(x => x.Text.Equals(value)); if (currentNode is null) { TreeNode newNode = new TreeNode(value.ToString()); - newNode.Name = step.Item1; + newNode.Name = step; parent.Nodes.Add(newNode); parent = newNode; }else diff --git a/VisEl/VisEl/VisEl.csproj b/VisEl/VisEl/VisEl.csproj index 10a7eb4..a628ca5 100644 --- a/VisEl/VisEl/VisEl.csproj +++ b/VisEl/VisEl/VisEl.csproj @@ -30,6 +30,7 @@ 4 +