-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEditMaketForm.cs
More file actions
163 lines (135 loc) · 3.96 KB
/
Copy pathEditMaketForm.cs
File metadata and controls
163 lines (135 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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 Antropod.MatrixMethod
{
public partial class EditMaketForm : Form
{
Maket _data;
private Maket Data
{
get
{
return _data;
}
set
{
_data = value;
if (value == null)
{
dataGridView1.DataSource = null;
dataGridView2.DataSource = null;
}
else
{
dataGridView1.DataSource = _data.Types;
dataGridView2.DataSource = _data.Components;
}
}
}
public EditMaketForm()
{
InitializeComponent();
Data = Maket.CreateDefault();
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
public Maket EditSubject(Maket subject)
{
Data = (subject == null) ? Maket.CreateDefault() : subject;
var dialogResult = ShowDialog();
return Data;
}
private void buttonDefaults_Click(object sender, EventArgs e)
{
Data = Maket.CreateDefault();
}
}
[Serializable]
public class Maket
{
public BindingList<StringValue> Types { get; set; }
public BindingList<StringIntValue> Components { get; set; }
public Maket()
{
Types = new BindingList<StringValue>();
Components = new BindingList<StringIntValue>();
}
public Maket(Maket src)
{
this.Types = new BindingList<StringValue>(src.Types);
this.Components = new BindingList<StringIntValue>(src.Components);
}
public Maket Clone()
{
throw new NotImplementedException();
// TODO: make clone really work
//return new Maket(this);
}
public static Maket CreateDefault()
{
var result = new Maket();
result.Types.Add(new StringValue("Резистор"));
result.Types.Add(new StringValue("Конденсатор"));
result.Components.Add(new StringIntValue("R1", 0));
result.Components.Add(new StringIntValue("R2", 0));
result.Components.Add(new StringIntValue("R3", 0));
result.Components.Add(new StringIntValue("C1", 1));
return result;
}
public IEnumerable<string> TypeNames()
{
foreach (var entry in Types)
{
yield return entry.Name;
}
}
public IEnumerable<string> ComponentNames()
{
foreach (var entry in Components)
{
yield return entry.Key;
}
}
public IEnumerable<int> ComponentIndices()
{
foreach (var entry in Components)
{
yield return entry.Value;
}
}
}
[Serializable]
public class StringValue
{
[DisplayName("Тип элемента")]
public string Name { get; set; }
public StringValue()
{}
public StringValue(string name)
{
Name = name;
}
}
[Serializable]
public class StringIntValue
{
[DisplayName("Название элемента")]
public string Key { get; set; }
[DisplayName("Номер в списке типов")]
public int Value { get; set; }
public StringIntValue()
{}
public StringIntValue(string key, int value)
{
Key = key;
Value = value;
}
}
}