using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Mesnac.Equips.BaseInfo; namespace Mesnac.Equips.SetConfig.DataConfig { public partial class NewDataForm : Form { private bool isNew = true; private ConfigEquipFactory configEquipFactory = null; public NewDataForm(ConfigEquipFactory configEquipFactory, bool isNew) { this.isNew = isNew; this.configEquipFactory = configEquipFactory; InitializeComponent(); } private void NewDataForm_Shown(object sender, EventArgs e) { IniComboBox1(); IniDefault(); } private readonly string _selectDefault = "---请选择---"; private void IniComboBox1() { int i = 0; while (true) { i++; this.textBox1.Text = "D" + i.ToString(); if (!SameDataName(this.textBox1.Text)) { break; } } this.comboBox1.Items.Clear(); this.comboBox1.Items.Add(_selectDefault); foreach (string s in Mesnac.Maths.Factory.Instance.AllMaths.Keys) { this.comboBox1.Items.Add(s); } } private void IniDefault() { if (configEquipFactory.CurrentData == null || isNew) { this.textBox3.Text = "0"; this.textBox4.Text = "1"; this.comboBox1.Text = _selectDefault; this.textBox5.Text = string.Empty; this.textBox6.Text = string.Empty; this.textBox7.Text = string.Empty; this.textBox8.Text = string.Empty; this.textBoxRunName.Text = string.Empty; this.checkBox1.Checked = true; } else { this.textBox1.Text = configEquipFactory.CurrentData.Name.ToString(); this.textBox3.Text = configEquipFactory.CurrentData.Start.ToString(); this.textBox4.Text = configEquipFactory.CurrentData.Len.ToString(); this.comboBox1.Text = Mesnac.Maths.Factory.Instance.GetMethodName(configEquipFactory.CurrentData.Method.ToString()); this.textBox5.Text = Mesnac.Maths.Factory.Instance.GetMethodParameter(configEquipFactory.CurrentData.Method.ToString()); this.textBox6.Text = configEquipFactory.CurrentData.Remark.ToString(); this.textBox7.Text = configEquipFactory.CurrentData.Max.ToString(); this.textBox8.Text = configEquipFactory.CurrentData.Subtractor.ToString(); this.textBoxRunName.Text = configEquipFactory.CurrentData.RunName.ToString(); this.checkBox1.Checked = configEquipFactory.CurrentData.IsSave; } } private void textBox_Int_KeyPress(object sender, KeyPressEventArgs e) { //判断按键是不是要输入的类型。 if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && (int)e.KeyChar != 46) { e.Handled = true; } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { Mesnac.Maths.IMath math = null; Mesnac.Maths.Factory.Instance.AllMaths.TryGetValue(comboBox1.Text.Replace(_selectDefault, string.Empty), out math); if (math == null) { textBox2.Text = string.Empty; } else { StringBuilder sb = new StringBuilder(); sb.Append("文件:").AppendLine((new System.IO.FileInfo(math.GetType().Assembly.Location)).Name); sb.Append("类名:").AppendLine(math.GetType().FullName); sb.AppendLine("说明:").AppendLine(math.Caption); textBox2.Text = sb.ToString(); } } #region 数据保存 private bool SameDataName(string name) { foreach (Data data in this.configEquipFactory.CurrentGroup.Data.Values) { if (data.Name.Equals(name)) { if (isNew) { return true; } else { if (data.Name != this.configEquipFactory.CurrentData.Name) { return true; } } } } return false; } private void button1_Click(object sender, EventArgs e) { int int_start = 0; if (!int.TryParse(this.textBox3.Text, out int_start)) { MessageBox.Show("请设置正确的起始位!"); return; } if (int_start < 0) { MessageBox.Show("起始位必须大于等于0!"); return; } int int_len = 0; if (!int.TryParse(this.textBox4.Text, out int_len)) { MessageBox.Show("请设置正确的长度!"); return; } if (int_len <= 0) { MessageBox.Show("长度必须大于0!"); return; } if (int_start + int_len > this.configEquipFactory.CurrentGroup.Len) { MessageBox.Show("数据索引值比读取数据组大!"); return; } if (SameDataName(this.textBox1.Text)) { MessageBox.Show("设备名称重复!"); return; } if (this.isNew) { configEquipFactory.CurrentData = new Data(); } else { configEquipFactory.CurrentGroup.Data.Remove(configEquipFactory.CurrentData.Name); } configEquipFactory.CurrentData.Name = this.textBox1.Text; configEquipFactory.CurrentData.Start = int_start; configEquipFactory.CurrentData.Len = int_len; configEquipFactory.CurrentData.Max = this.textBox7.Text; configEquipFactory.CurrentData.Subtractor = this.textBox8.Text; configEquipFactory.CurrentData.RunName = this.textBoxRunName.Text; configEquipFactory.CurrentData.Method = string.Empty; configEquipFactory.CurrentData.IsSave = this.checkBox1.Checked; if (!string.IsNullOrWhiteSpace(comboBox1.Text.Replace(_selectDefault, string.Empty))) { configEquipFactory.CurrentData.Method = string.Format("{0}({1})", comboBox1.Text, this.textBox5.Text); } configEquipFactory.CurrentData.Remark = this.textBox6.Text; configEquipFactory.CurrentGroup.Data.Add(configEquipFactory.CurrentData.Name, configEquipFactory.CurrentData); this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); } #endregion private void button2_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textBoxRunName.Text)) { MessageBox.Show("必须填写别名才可以进行设置"); return; } new DataFieldForm(textBoxRunName.Text).ShowDialog(this); } } }