первая лаба
This commit is contained in:
parent
e9ac95bb9f
commit
e49f5b1108
@ -1,69 +0,0 @@
|
|||||||
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 VisComLib
|
|
||||||
{
|
|
||||||
public partial class UserComboBox : UserControl
|
|
||||||
{
|
|
||||||
public UserComboBox()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
public void ComboBoxClear()
|
|
||||||
{
|
|
||||||
comboBox1.Items.Clear();
|
|
||||||
comboBox1.SelectedItem = null;
|
|
||||||
}
|
|
||||||
public string SelectedItem
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (comboBox1.Items.Count == 0)
|
|
||||||
{
|
|
||||||
return " ";
|
|
||||||
}
|
|
||||||
if (comboBox1.SelectedItem == null)
|
|
||||||
{
|
|
||||||
return " ";
|
|
||||||
}
|
|
||||||
return comboBox1.SelectedItem.ToString()!;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (comboBox1.Items.Contains(value))
|
|
||||||
{
|
|
||||||
comboBox1.SelectedItem = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public ComboBox.ObjectCollection ComboBoxItems
|
|
||||||
{
|
|
||||||
get { return comboBox1.Items; }
|
|
||||||
}
|
|
||||||
private EventHandler _onValueChangedEvent;
|
|
||||||
public event EventHandler ValueChanged
|
|
||||||
{
|
|
||||||
add
|
|
||||||
{
|
|
||||||
_onValueChangedEvent += value;
|
|
||||||
}
|
|
||||||
|
|
||||||
remove
|
|
||||||
{
|
|
||||||
_onValueChangedEvent -= value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void CustomComboBox_SelectedValueChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
_onValueChangedEvent?.Invoke(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
namespace VisComLib
|
namespace VisComLib.Components
|
||||||
{
|
{
|
||||||
partial class UserComboBox
|
partial class UserListBox
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Обязательная переменная конструктора.
|
/// Обязательная переменная конструктора.
|
||||||
@ -28,29 +28,30 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
comboBox1 = new ComboBox();
|
listBox1 = new ListBox();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// comboBox1
|
// listBox1
|
||||||
//
|
//
|
||||||
comboBox1.FormattingEnabled = true;
|
listBox1.FormattingEnabled = true;
|
||||||
comboBox1.Location = new Point(3, 3);
|
listBox1.ItemHeight = 15;
|
||||||
comboBox1.Name = "comboBox1";
|
listBox1.Location = new Point(3, 3);
|
||||||
comboBox1.Size = new Size(299, 23);
|
listBox1.Name = "listBox1";
|
||||||
comboBox1.TabIndex = 0;
|
listBox1.Size = new Size(367, 139);
|
||||||
|
listBox1.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// UserComboBox
|
// UserListBox
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
Controls.Add(comboBox1);
|
Controls.Add(listBox1);
|
||||||
Name = "UserComboBox";
|
Name = "UserListBox";
|
||||||
Size = new Size(305, 146);
|
Size = new Size(373, 154);
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private ComboBox comboBox1;
|
private ListBox listBox1;
|
||||||
}
|
}
|
||||||
}
|
}
|
137
PIbd-32_Selyaev_D.A._COP/VisComLib/Components/UserListBox.cs
Normal file
137
PIbd-32_Selyaev_D.A._COP/VisComLib/Components/UserListBox.cs
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace VisComLib.Components
|
||||||
|
{
|
||||||
|
public partial class UserListBox : UserControl
|
||||||
|
{
|
||||||
|
private string template;
|
||||||
|
private string start;
|
||||||
|
private string end;
|
||||||
|
public UserListBox()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemplate(string _template, string _start, string _end)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_template) || string.IsNullOrEmpty(_start) || string.IsNullOrEmpty(_end))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Wrong template");
|
||||||
|
}
|
||||||
|
template = _template;
|
||||||
|
start = _start;
|
||||||
|
end = _end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int SelectedRow
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return listBox1.SelectedIndex;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value < 0) return;
|
||||||
|
listBox1.SelectedIndex = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public T GetObjectFromStr<T>() where T : class, new()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (listBox1.SelectedIndex < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
string row = listBox1.SelectedItem.ToString();
|
||||||
|
T curObject = new T();
|
||||||
|
StringBuilder sb = new StringBuilder(row);
|
||||||
|
|
||||||
|
string[] words = template.Split(new[] { char.Parse(start), char.Parse(end) });
|
||||||
|
|
||||||
|
StringBuilder myrow = new StringBuilder(row);
|
||||||
|
List<string> flexPartsTemplate = new();
|
||||||
|
foreach (string word in words)
|
||||||
|
{
|
||||||
|
if (row.Contains(word) && !string.IsNullOrEmpty(word))
|
||||||
|
{
|
||||||
|
myrow.Replace(word, end);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
flexPartsTemplate.Add(word);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
string[] flexParts = myrow.ToString().Split(end);
|
||||||
|
int i = 1;
|
||||||
|
StringBuilder result = new StringBuilder(template);
|
||||||
|
foreach (string word in flexPartsTemplate)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(word))
|
||||||
|
{
|
||||||
|
result.Replace(word, flexParts[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sb = result;
|
||||||
|
|
||||||
|
foreach (var property in typeof(T).GetProperties())
|
||||||
|
{
|
||||||
|
if (!property.CanWrite)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startBorder = sb.ToString().IndexOf(start);
|
||||||
|
if (startBorder == -1)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int endBorder = sb.ToString().IndexOf(end, startBorder + 1);
|
||||||
|
if (endBorder == -1)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
string propertyValue = sb.ToString(startBorder + 1, endBorder - startBorder - 1);
|
||||||
|
sb.Remove(0, endBorder + 1);
|
||||||
|
property.SetValue(curObject, Convert.ChangeType(propertyValue, property.PropertyType));
|
||||||
|
}
|
||||||
|
return curObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FillProperty<T>(T dataObject, int rowIndex, string propertyName)
|
||||||
|
{
|
||||||
|
while (listBox1.Items.Count <= rowIndex)
|
||||||
|
{
|
||||||
|
listBox1.Items.Add(template);
|
||||||
|
}
|
||||||
|
|
||||||
|
string row = listBox1.Items[rowIndex].ToString();
|
||||||
|
PropertyInfo propertyInfo = dataObject.GetType().GetProperty(propertyName);
|
||||||
|
|
||||||
|
if (propertyInfo != null)
|
||||||
|
{
|
||||||
|
var propertyValue = propertyInfo.GetValue(dataObject);
|
||||||
|
row = row.Replace($"{start}{propertyName}{end}", propertyValue.ToString());
|
||||||
|
listBox1.Items[rowIndex] = row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CountRows()
|
||||||
|
{
|
||||||
|
return listBox1.Items.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -36,8 +36,8 @@
|
|||||||
buttonTextBox = new Button();
|
buttonTextBox = new Button();
|
||||||
userTextBox1 = new VisComLib.Components.UserTextBox();
|
userTextBox1 = new VisComLib.Components.UserTextBox();
|
||||||
labeltextbox = new Label();
|
labeltextbox = new Label();
|
||||||
userComboBox1 = new VisComLib.UserComboBox();
|
|
||||||
buttonadd = new Button();
|
buttonadd = new Button();
|
||||||
|
userListBox1 = new VisComLib.Components.UserListBox();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// userddList1
|
// userddList1
|
||||||
@ -113,31 +113,31 @@
|
|||||||
labeltextbox.TabIndex = 8;
|
labeltextbox.TabIndex = 8;
|
||||||
labeltextbox.Text = "label1";
|
labeltextbox.Text = "label1";
|
||||||
//
|
//
|
||||||
// userComboBox1
|
|
||||||
//
|
|
||||||
userComboBox1.Location = new Point(14, 163);
|
|
||||||
userComboBox1.Name = "userComboBox1";
|
|
||||||
userComboBox1.SelectedItem = " ";
|
|
||||||
userComboBox1.Size = new Size(311, 159);
|
|
||||||
userComboBox1.TabIndex = 9;
|
|
||||||
//
|
|
||||||
// buttonadd
|
// buttonadd
|
||||||
//
|
//
|
||||||
buttonadd.Location = new Point(14, 328);
|
buttonadd.Location = new Point(14, 328);
|
||||||
buttonadd.Name = "buttonadd";
|
buttonadd.Name = "buttonadd";
|
||||||
buttonadd.Size = new Size(75, 23);
|
buttonadd.Size = new Size(75, 23);
|
||||||
buttonadd.TabIndex = 10;
|
buttonadd.TabIndex = 10;
|
||||||
buttonadd.Text = "button1";
|
buttonadd.Text = "Получить";
|
||||||
buttonadd.UseVisualStyleBackColor = true;
|
buttonadd.UseVisualStyleBackColor = true;
|
||||||
buttonadd.Click += buttonAdd_Click;
|
buttonadd.Click += buttonAdd_Click;
|
||||||
//
|
//
|
||||||
|
// userListBox1
|
||||||
|
//
|
||||||
|
userListBox1.Location = new Point(12, 168);
|
||||||
|
userListBox1.Name = "userListBox1";
|
||||||
|
userListBox1.SelectedRow = -1;
|
||||||
|
userListBox1.Size = new Size(373, 154);
|
||||||
|
userListBox1.TabIndex = 11;
|
||||||
|
//
|
||||||
// Form1
|
// Form1
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(337, 369);
|
ClientSize = new Size(389, 366);
|
||||||
|
Controls.Add(userListBox1);
|
||||||
Controls.Add(buttonadd);
|
Controls.Add(buttonadd);
|
||||||
Controls.Add(userComboBox1);
|
|
||||||
Controls.Add(labeltextbox);
|
Controls.Add(labeltextbox);
|
||||||
Controls.Add(userTextBox1);
|
Controls.Add(userTextBox1);
|
||||||
Controls.Add(buttonTextBox);
|
Controls.Add(buttonTextBox);
|
||||||
@ -162,7 +162,7 @@
|
|||||||
private Button buttonTextBox;
|
private Button buttonTextBox;
|
||||||
private VisComLib.Components.UserTextBox userTextBox1;
|
private VisComLib.Components.UserTextBox userTextBox1;
|
||||||
private Label labeltextbox;
|
private Label labeltextbox;
|
||||||
private VisComLib.UserComboBox userComboBox1;
|
|
||||||
private Button buttonadd;
|
private Button buttonadd;
|
||||||
|
private VisComLib.Components.UserListBox userListBox1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using static System.Runtime.InteropServices.Marshalling.IIUnknownCacheStrategy;
|
using static System.Runtime.InteropServices.Marshalling.IIUnknownCacheStrategy;
|
||||||
|
|
||||||
@ -6,6 +7,7 @@ namespace WinForms
|
|||||||
public partial class Form1 : Form
|
public partial class Form1 : Form
|
||||||
{
|
{
|
||||||
List<string> list = new List<string>() { "Áåòîí", "Êèðïè÷", "Äðåâåñèíà" };
|
List<string> list = new List<string>() { "Áåòîí", "Êèðïè÷", "Äðåâåñèíà" };
|
||||||
|
List<Student> students;
|
||||||
public Form1()
|
public Form1()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@ -15,10 +17,26 @@ namespace WinForms
|
|||||||
|
|
||||||
}
|
}
|
||||||
userTextBox1.Pattern = @"^\+7\d{10}$";
|
userTextBox1.Pattern = @"^\+7\d{10}$";
|
||||||
userComboBox1.ComboBoxItems.Add("one");
|
students = new List<Student>() {
|
||||||
userComboBox1.ComboBoxItems.Add("two");
|
new Student("Èâàí", "Èëþõèí", "ÏÈáä-11"),
|
||||||
userComboBox1.SelectedItem = "one";
|
new Student("Àðòåì", "Àðòåìîâ", "ÏÈáä-11"),
|
||||||
|
new Student("Èëüÿ", "Êîìèêîâ", "ÏÈáä-12")
|
||||||
|
};
|
||||||
|
userListBox1.setTemplate("Çàïîëíèòü {FirstName} {LastName} èç {Group}", "{", "}");
|
||||||
|
|
||||||
|
userListBox1.FillProperty(students[0], 0, "FirstName");
|
||||||
|
userListBox1.FillProperty(students[0], 0, "LastName");
|
||||||
|
userListBox1.FillProperty(students[0], 0, "Group");
|
||||||
|
|
||||||
|
userListBox1.FillProperty(students[1], 1, "FirstName");
|
||||||
|
userListBox1.FillProperty(students[1], 1, "LastName");
|
||||||
|
userListBox1.FillProperty(students[1], 1, "Group");
|
||||||
|
|
||||||
|
userListBox1.FillProperty(students[2], 2, "FirstName");
|
||||||
|
userListBox1.FillProperty(students[2], 2, "LastName");
|
||||||
|
userListBox1.FillProperty(students[2], 2, "Group");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CustomEventHandler(object sender, EventArgs e)
|
private void CustomEventHandler(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Âûáðàííûé ýëåìåíò èçìåíåí");
|
MessageBox.Show("Âûáðàííûé ýëåìåíò èçìåíåí");
|
||||||
@ -46,7 +64,15 @@ namespace WinForms
|
|||||||
}
|
}
|
||||||
private void buttonAdd_Click(object sender, EventArgs e)
|
private void buttonAdd_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
userComboBox1.ComboBoxItems.Add("added");
|
try
|
||||||
|
{
|
||||||
|
Student selectedPerson = userListBox1.GetObjectFromStr<Student>();
|
||||||
|
MessageBox.Show($"Èíôîðìàöèÿ î ñòóäåíòå: Èìÿ - {selectedPerson.FirstName}, Ôàìèëèÿ - {selectedPerson.LastName}, Ãðóïïà - {selectedPerson.Group}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Îøèáêà: {ex.Message}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
22
PIbd-32_Selyaev_D.A._COP/WinFrom/WinForms/Student.cs
Normal file
22
PIbd-32_Selyaev_D.A._COP/WinFrom/WinForms/Student.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WinForms
|
||||||
|
{
|
||||||
|
public class Student
|
||||||
|
{
|
||||||
|
public string FirstName { get; set; }
|
||||||
|
public string LastName { get; set; }
|
||||||
|
public string Group { get; set; }
|
||||||
|
public Student(string fn, string ln, string gr)
|
||||||
|
{
|
||||||
|
FirstName = fn;
|
||||||
|
LastName = ln;
|
||||||
|
Group = gr;
|
||||||
|
}
|
||||||
|
public Student() { }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user