using SourceGrid; using System; using System.Collections; 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; using System.Xml; using System.Xml.Linq; namespace OTSPartA_STDEditor { public partial class Form_ConstantsEditor2 : Form { OTSDockWindow m_DockWindow = null; public STDRuleslist m_STDRuleslist = null; public Attributes m_Attributes = null; public SubMidWindow m_SubMidWindow = null; public Dictionary STDDictionary = new Dictionary(); private Dictionary STDDictionaryInitial=new Dictionary(); public Dictionary GroupIdDictionaryFromId = new Dictionary(); public Dictionary GroupIdDictionaryFromName = new Dictionary(); //string STDDBAddress = Application.StartupPath + "\\Config\\SysData\\" + "OTSCleanlinesSTD.db"; //string STDDBAddress_backup = Application.StartupPath + "\\Config\\SysData\\LibBackup\\" + "OTSCleanlinesSTD_backup.db"; string STDDBAddress_backupDirectory = Application.StartupPath + "\\Config\\SysData\\LibBackup\\"; public string STDDBAddress = ""; //public string STDDBAddress_backup = ""; //国际化 public Language lan; Hashtable table; //是否做出过更改 public bool IsModified { set; get; } public Form_ConstantsEditor2() { InitializeComponent(); m_STDRuleslist = new STDRuleslist(this); m_Attributes = new Attributes(this); m_SubMidWindow = new SubMidWindow(this); m_DockWindow = new OTSDockWindow(this); } private void Form_ConstantsEditor2_Load(object sender, EventArgs e) { lan = new Language(this); table = lan.GetNameTable("Form_ConstantsEditor2"); if (STDDBAddress != "") { InitForms(STDDBAddress); this.Text = this.Text.Split(' ')[0] + " " + STDDBAddress; IsModified = false; } } void LoadConstants(string STDDBAddress) { try { System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection("data source='" + STDDBAddress + "'"); m_dbConnection.Open(); System.Data.SQLite.SQLiteDataAdapter m_dataAdapter = new System.Data.SQLite.SQLiteDataAdapter("select * from Constants", m_dbConnection); DataSet ds = new DataSet(); m_dataAdapter.Fill(ds); DataTable dt = ds.Tables[0]; string ConstantsStr = dt.Rows[0][0].ToString(); ConstantsStr = ConstantsStr.Replace(" ", ""); string[] ConstantsStr2 = ConstantsStr.Split(','); m_SubMidWindow.m_STDEditor.comboBox_Constants.Items.Clear(); m_SubMidWindow.m_STDEditor.comboBox_Constants.Items.AddRange(ConstantsStr2); m_dbConnection.Close(); } catch (Exception ee) { MessageBox.Show(ee.ToString()); } } bool LoadClassifyToDictionary(string DBAddress, ref Dictionary STDDictionary) { try { //STDDictionaryInitial.Clear(); System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection("data source='" + DBAddress + "'"); m_dbConnection.Open(); System.Data.SQLite.SQLiteDataAdapter m_dataAdapter = new System.Data.SQLite.SQLiteDataAdapter("select * from ClassifySTD order by ListNum", m_dbConnection); DataSet ds = new DataSet(); m_dataAdapter.Fill(ds); DataTable dt = ds.Tables[0]; if (dt != null) { if (dt.Rows.Count > 0) { foreach (DataRow item in dt.Rows) { STDdata new_STDdata = new STDdata(); new_STDdata.Hardness = item["Hardness"].ToString(); new_STDdata.Density = item["Density"].ToString(); new_STDdata.Electrical_conductivity = item["Electrical_conductivity"].ToString(); new_STDdata.BSE = item["BSE"].ToString(); new_STDdata.Formula = item["Formula"].ToString(); new_STDdata.Element = item["Element"].ToString(); new_STDdata.StrName = item["StrName"].ToString(); new_STDdata.Expression = item["Expression"].ToString(); new_STDdata.Color = item["Color"].ToString(); new_STDdata.KeyElementList = item["KeyElementList"].ToString(); new_STDdata.SubElementList = item["SubElementList"].ToString(); new_STDdata.GroupId = item["GroupId"].ToString(); new_STDdata.ListNum= item["ListNum"].ToString(); new_STDdata.GroupId = item["GroupId"].ToString(); STDDictionary.Add(int.Parse(item["STDId"].ToString()), new_STDdata); //STDDictionaryInitial = new Dictionary(STDDictionary); } } } return true; } catch /*(Exception ee)*/ { MessageBox.Show(table["message6"].ToString(), table["message32"].ToString()); return false; } } public void ChangeSTDEditorAndGrid_Attributes(int STDId) { m_SubMidWindow.ChangeText_textbox_STDEditor(STDId); m_SubMidWindow.SelSTDXray(STDId, STDDictionary[STDId]); m_Attributes.SetDatatoGrid_Attributes(STDId); } private void rbBackup_Click(object sender, EventArgs e) { if (m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row >= 0) { //if (m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") //{ if (CheckAttributes()) { if (Checktextbox_STDEditor()) { SaveDataOfSelRule(m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Column); try { SaveFileDialog saveFile = new SaveFileDialog(); saveFile.Title = table["message23"].ToString(); saveFile.Filter = table["message36"].ToString(); saveFile.OverwritePrompt = true; //是否覆盖当前文件 saveFile.RestoreDirectory = true; //还原上次目录 if (saveFile.ShowDialog() == DialogResult.OK) { System.IO.File.Copy(STDDBAddress, saveFile.FileName, true); bool result = SaveDictionaryToClassify(saveFile.FileName); if (result) { MessageBox.Show(table["message25"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { return; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } //} } else { MessageBox.Show(table["message3"].ToString(), table["message32"].ToString()); } } else { try { SaveFileDialog saveFile = new SaveFileDialog(); saveFile.Title = table["message23"].ToString(); saveFile.Filter = table["message36"].ToString(); saveFile.OverwritePrompt = true; //是否覆盖当前文件 saveFile.RestoreDirectory = true; //还原上次目录 if (saveFile.ShowDialog() == DialogResult.OK) { System.IO.File.Copy(STDDBAddress, saveFile.FileName, true); bool result = SaveDictionaryToClassify(saveFile.FileName); if (result) { MessageBox.Show(table["message25"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { return; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } public bool ClearDb(string DBAddress, string DBTableName) { try { System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection("data source='" + DBAddress + "'"); m_dbConnection.Open(); System.Data.SQLite.SQLiteCommand cmm = m_dbConnection.CreateCommand(); cmm.CommandText = "delete from " + DBTableName; cmm.ExecuteNonQuery(); m_dbConnection.Close(); return true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); return false; } } private void rbRecover_Click(object sender, EventArgs e) { } object Clone(Dictionary STDDictionary) { Dictionary STDDictionaryInitial = new Dictionary(); foreach (var key in STDDictionary.Keys) { STDdata tDdata = new STDdata(); tDdata = tDdata.Clone(STDDictionary[key]) as STDdata; STDDictionaryInitial.Add(key, tDdata); } return STDDictionaryInitial; } private void rbSave_Click(object sender, EventArgs e) { if (m_STDRuleslist.Grid_Minerals.RowsCount > 1) { if (m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row > 0) { if (m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") { if (CheckAttributes()) { if (Checktextbox_STDEditor()) { FormForWaiting forWaiting = new FormForWaiting(); forWaiting.Show(); SaveDataOfSelRule(m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0); // SaveXmlTreeDataToXml(Address); bool result = SaveDictionaryToClassify(STDDBAddress); if (result) { m_SubMidWindow.m_STDEditor.SaveSTDXray(); STDDictionaryInitial.Clear(); STDDictionaryInitial = Clone(STDDictionary) as Dictionary; forWaiting.Close(); IsModified = false; MessageBox.Show(table["message1"].ToString(), table["message32"].ToString()); } else { forWaiting.Close(); MessageBox.Show(table["message2"].ToString(), table["message32"].ToString()); } } } } } else { Position pos = new Position(1, 0); m_STDRuleslist.Grid_Minerals[1, 0].Grid.Select(); if (m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") { if (CheckAttributes()) { if (Checktextbox_STDEditor()) { FormForWaiting forWaiting = new FormForWaiting(); forWaiting.Show(); SaveDataOfSelRule(m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0); //SaveXmlTreeDataToXml(Address); bool result = SaveDictionaryToClassify(STDDBAddress); if (result) { m_SubMidWindow.m_STDEditor.SaveSTDXray(); STDDictionaryInitial.Clear(); STDDictionaryInitial = new Dictionary(STDDictionary); forWaiting.Close(); IsModified = false; MessageBox.Show(table["message1"].ToString(), table["message32"].ToString()); } else { forWaiting.Close(); MessageBox.Show(table["message2"].ToString(), table["message32"].ToString()); } } } } } } } /// /// [颜色:RGB转成16进制] /// /// 红 int /// 绿 int /// 蓝 int /// public static string colorRGBtoHx16(int R, int G, int B) { return System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.FromArgb(R, G, B)); } //表达式规则检查 public bool Checktextbox_STDEditor() { string str_RemoveBlank = m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString().Replace(" ", ""); str_RemoveBlank = str_RemoveBlank.Replace("\r\n", ""); //分割符号检验 string[] Symbol = { "and", "or", "+", "-", "*", "/", "=", ">", "<" }; for (int i = 0; i < Symbol.Length; i++) { for (int j = 0; j < Symbol.Length; j++) { if ((Symbol[i] + Symbol[j]) != ">=" && (Symbol[i] + Symbol[j]) != "<=") { if (str_RemoveBlank.Contains(Symbol[i] + Symbol[j])) { MessageBox.Show(table["message18"].ToString() + Symbol[i] + Symbol[j], table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } } } if (str_RemoveBlank.Contains(Symbol[i] + ")") || str_RemoveBlank.Contains("(" + Symbol[i])) { MessageBox.Show(table["message18"].ToString() + Symbol[i] + ")", table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } if (str_RemoveBlank.Contains("(" + Symbol[i])) { MessageBox.Show(table["message18"].ToString() + "(" + Symbol[i], table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } } if ((str_RemoveBlank != null) && (str_RemoveBlank != "")) { //左右括号匹配检验 int BracketsNum = 0; for (int i = 0; i < str_RemoveBlank.Length; i++) { if (str_RemoveBlank[i] == '(') BracketsNum++; if (str_RemoveBlank[i] == ')') BracketsNum--; } if (BracketsNum != 0) { MessageBox.Show(table["message19"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } //首字符检测 if ((str_RemoveBlank[0] == '+') || (str_RemoveBlank[0] == '-') || (str_RemoveBlank[0] == '*') || (str_RemoveBlank[0] == '/') || (str_RemoveBlank[0] == '>') || (str_RemoveBlank[0] == '<') || (str_RemoveBlank[0] == '=') || (str_RemoveBlank[0] == ')') || (str_RemoveBlank[str_RemoveBlank.Length - 1] == '(')) { MessageBox.Show(table["message20"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } if (str_RemoveBlank.Length >= 3) { if ((str_RemoveBlank.Substring(0, 3) == "and") || (str_RemoveBlank.Substring(0, 3) == "end")) { MessageBox.Show(table["message20"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } } } //forth_elem干扰or分隔符,故先行去掉 str_RemoveBlank = str_RemoveBlank.Replace("forth_elem", ""); string[] str_Removeand = System.Text.RegularExpressions.Regex.Split(str_RemoveBlank, "and", System.Text.RegularExpressions.RegexOptions.None); List str_Removeandor = new List(); for (int i = 0; i < str_Removeand.Length; i++) { str_Removeandor.AddRange(System.Text.RegularExpressions.Regex.Split(str_Removeand[i], "or", System.Text.RegularExpressions.RegexOptions.None)); } List list_all = new List(); for (int i = 0; i < str_Removeandor.Count; i++) { list_all.AddRange(str_Removeandor[i].Split(new char[] { '+', '-', '*', '/', '=', '>', '<', '(', ')' })); } //常量 List Constantslist = new List(); for (int j = 0; j < m_SubMidWindow.m_STDEditor.comboBox_Constants.Items.Count; j++) { Constantslist.Add(m_SubMidWindow.m_STDEditor.comboBox_Constants.Items[j].ToString().Split('=')[0]); } for (int i = 0; i < list_all.Count; i++) { //周期元素? if (this.m_SubMidWindow.m_STDEditor.comboBox_PeriodicTable.Items.Contains(list_all[i])) { continue; } //first_elem? if (this.m_SubMidWindow.m_STDEditor.comboBox_Elem1.Items.Contains(list_all[i])) { continue; } //Element1? if (this.m_SubMidWindow.m_STDEditor.comboBox_Elem.Items.Contains(list_all[i])) { continue; } //其它元素? if (this.m_SubMidWindow.m_STDEditor.comboBox_ImgProperty.Items.Contains(list_all[i])) { continue; } //常量? if (Constantslist.Contains(list_all[i])) { continue; } //数字? double DNum = 0; if (double.TryParse(list_all[i], out DNum)) { continue; } //>=? <=?等其它情况 if (list_all[i] == "") { continue; } //true false? if ((list_all[i] == "true") || (list_all[i] == "false")) { continue; } MessageBox.Show(table["message21"].ToString() + list_all[i], table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } //检测是否有<>= true,false if (!m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString().Contains("<") && !m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString().Contains(">") && !m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString().Contains("=") && m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString() != "true" && m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString() != "false") { MessageBox.Show(table["message22"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } return true; } //属性检测 public bool CheckAttributes() { //if (double.Parse(m_Attributes.Grid_Attributes[4, 1].Value.ToString()) <= 0) //{ // Position pos = new Position(4, 1); // m_Attributes.Grid_Attributes.Selection.Focus(pos, true); // MessageBox.Show(table["message10"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); // return false; //} //if (double.Parse(m_Attributes.Grid_Attributes[5, 1].Value.ToString()) <= 0) //{ // Position pos = new Position(5, 1); // m_Attributes.Grid_Attributes.Selection.Focus(pos, true); // MessageBox.Show(table["message11"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); // return false; //} //if (double.Parse(m_Attributes.Grid_Attributes[6, 1].Value.ToString()) <= 0) //{ // Position pos = new Position(6, 1); // m_Attributes.Grid_Attributes.Selection.Focus(pos, true); // MessageBox.Show(table["message12"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); // return false; //} if (int.Parse(m_Attributes.Grid_Attributes[7, 1].Value.ToString()) <= 0) { Position pos = new Position(7, 1); m_Attributes.Grid_Attributes.Selection.Focus(pos, true); MessageBox.Show(table["message9"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } if (m_Attributes.Grid_Attributes[10, 1].Value != null) { if (!GroupIdDictionaryFromName.ContainsKey(m_Attributes.Grid_Attributes[10, 1].Value.ToString())) { Position pos = new Position(10, 1); m_Attributes.Grid_Attributes.Selection.Focus(pos, true); MessageBox.Show(table["message4"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } } #region 化学式和元素暂无限制 //if (m_Attributes.Grid_Attributes[7, 1].Value.ToString()) //{ // Position pos = new Position(7, 1); // m_Attributes.Grid_Attributes.Selection.Focus(pos, true); // MessageBox.Show(table["message10"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); // return false; //} //if (m_Attributes.Grid_Attributes[8, 1].Value.ToString()) //{ // Position pos = new Position(8, 1); // m_Attributes.Grid_Attributes.Selection.Focus(pos, true); // MessageBox.Show(table["message10"].ToString(), table["message32"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information); // return false; //} #endregion return true; } public void SaveDataOfSelRule(int PreRow, int PreColumn) { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].StrName = m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Value.ToString(); STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Color = colorRGBtoHx16(m_Attributes.Grid_Attributes[3, 1].View.BackColor.R, m_Attributes.Grid_Attributes[3, 1].View.BackColor.G, m_Attributes.Grid_Attributes[3, 1].View.BackColor.B); STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Hardness = m_Attributes.Grid_Attributes[4, 1].Value.ToString(); STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Density = m_Attributes.Grid_Attributes[5, 1].Value.ToString(); STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Electrical_conductivity = m_Attributes.Grid_Attributes[6, 1].Value.ToString(); STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].BSE = m_Attributes.Grid_Attributes[7, 1].Value.ToString(); if (m_Attributes.Grid_Attributes[8, 1].Value!= null) { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Formula = m_Attributes.Grid_Attributes[8, 1].Value.ToString(); } else { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Formula = ""; } if (m_Attributes.Grid_Attributes[9, 1].Value != null) { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Element = m_Attributes.Grid_Attributes[9, 1].Value.ToString(); } else { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Element = ""; } if (m_Attributes.Grid_Attributes[10, 1].Value != null) { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].GroupId = GroupIdDictionaryFromName[m_Attributes.Grid_Attributes[10, 1].Value.ToString()].ToString(); } else { STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].GroupId = "0"; } STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].Expression = m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text.ToString(); string sKeyElements = ""; for (int i = 0; i < m_SubMidWindow.m_STDEditor.dataGridView_KeyElements.Columns.Count; i++) { sKeyElements += m_SubMidWindow.m_STDEditor.dataGridView_KeyElements.Rows[0].Cells[i].Value.ToString() + ","; } if (sKeyElements.Length > 0) { sKeyElements = sKeyElements.Substring(0, sKeyElements.Length - 1); } string sSubElements = ""; for (int i = 0; i < m_SubMidWindow.m_STDEditor.dataGridView_SubElements.Columns.Count; i++) { sSubElements += m_SubMidWindow.m_STDEditor.dataGridView_SubElements.Rows[0].Cells[i].Value.ToString() + ","; } if (sSubElements.Length > 0) { sSubElements = sSubElements.Substring(0, sSubElements.Length - 1); } STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].KeyElementList = sKeyElements; STDDictionary[int.Parse(m_STDRuleslist.Grid_Minerals[PreRow, PreColumn].Tag.ToString())].SubElementList = sSubElements; } /// /// 保存ClassifySTD库和MineralElements库 /// /// /// bool SaveDictionaryToClassify(string DBAddress) { //保存列表顺序 for(int i=1;i kv in STDDictionary) // { // string insertstr = "Insert into ClassifySTD(STDId,StrName,Color,KeyElementList,SubElementList,UsingImgPropertyList,UsingOtherPropertyList,Expression,Hardness,Density,Electrical_conductivity,BSE,Formula,Element)"; // string aa="values(" + kv.Value.STDId + ",'" + kv.Value.StrName + "','" + kv.Value.Color + "','" + kv.Value.KeyElementList + "','" + kv.Value.SubElementList + "','" + kv.Value.UsingImgPropertyList + "','" + kv.Value.UsingOtherPropertyList + "','" + kv.Value.Expression + "'," + kv.Value.Hardness + "," + kv.Value.Density + "," + kv.Value.Electrical_conductivity + "," + kv.Value.BSE + ",'" + kv.Value.Formula + "','" + kv.Value.Element + "')"; // cmm.CommandText = insertstr+aa; // cmm.ExecuteNonQuery(); // } //} //catch (Exception ex) //{ // MessageBox.Show(ex.ToString()); //} //m_dbConnection.Close(); #endregion try { System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection("data source='" + DBAddress + "'"); m_dbConnection.Open(); System.Data.SQLite.SQLiteCommand cmm = m_dbConnection.CreateCommand(); cmm.CommandText = "delete from ClassifySTD"; //cmm.CommandText = "delete from ClassifySTD_Backup"; try { cmm.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return false; } System.Data.SQLite.SQLiteDataAdapter m_dataAdapter = new System.Data.SQLite.SQLiteDataAdapter("select * from ClassifySTD", m_dbConnection); //System.Data.SQLite.SQLiteDataAdapter m_dataAdapter = new System.Data.SQLite.SQLiteDataAdapter("select * from ClassifySTD_Backup", m_dbConnection); System.Data.SQLite.SQLiteCommandBuilder qLiteCommandBuilder = new System.Data.SQLite.SQLiteCommandBuilder(m_dataAdapter); DataSet ds = new DataSet(); m_dataAdapter.Fill(ds, "ClassifySTD"); DataTable dt = ds.Tables["ClassifySTD"]; //m_dataAdapter.Fill(ds, "ClassifySTD_Backup"); //DataTable dt = ds.Tables["ClassifySTD_Backup"]; dt.Clear(); foreach (KeyValuePair kv in STDDictionary) { string UsingElementList = ""; string UsingImgPropertyList = ""; string UsingOtherPropertyList = ""; List UsingElementL = new List(); List UsingImgPropertyL = new List(); List UsingOtherPropertyL = new List(); string str_RemoveBlank = kv.Value.Expression; //forth_elem干扰or分隔符,故先行去掉 if (str_RemoveBlank.Contains("forth_elem")) { str_RemoveBlank = str_RemoveBlank.Replace("forth_elem", ""); UsingOtherPropertyList = "forth_elem,"; } str_RemoveBlank = str_RemoveBlank.Replace(" ", ""); string[] str_Removeand = System.Text.RegularExpressions.Regex.Split(str_RemoveBlank, "and", System.Text.RegularExpressions.RegexOptions.None); List str_Removeandor = new List(); for (int i = 0; i < str_Removeand.Length; i++) { str_Removeandor.AddRange(System.Text.RegularExpressions.Regex.Split(str_Removeand[i], "or", System.Text.RegularExpressions.RegexOptions.None)); } List list_all = new List(); for (int i = 0; i < str_Removeandor.Count; i++) { list_all.AddRange(str_Removeandor[i].Split(new char[] { '+', '-', '*', '/', '=', '>', '<', '(', ')' })); } for (int i = 0; i < list_all.Count; i++) { //周期元素? if (m_SubMidWindow.m_STDEditor.comboBox_PeriodicTable.Items.Contains(list_all[i])) { if (!UsingElementL.Contains(list_all[i])) { UsingElementL.Add(list_all[i]); } } //first_elem? if (m_SubMidWindow.m_STDEditor.comboBox_Elem1.Items.Contains(list_all[i])) { if (!UsingOtherPropertyL.Contains(list_all[i])) { UsingOtherPropertyL.Add(list_all[i]); } } //Element1? if (m_SubMidWindow.m_STDEditor.comboBox_Elem.Items.Contains(list_all[i])) { if (!UsingOtherPropertyL.Contains(list_all[i])) { UsingOtherPropertyL.Add(list_all[i]); } } //其它元素? if (m_SubMidWindow.m_STDEditor.comboBox_ImgProperty.Items.Contains(list_all[i])) { if (!UsingImgPropertyL.Contains(list_all[i])) { UsingImgPropertyL.Add(list_all[i]); } } } if (UsingElementL.Count > 0) { for (int i = 0; i < UsingElementL.Count - 1; i++) { UsingElementList += UsingElementL[i] + ","; } UsingElementList += UsingElementL[UsingElementL.Count - 1]; } if (UsingImgPropertyL.Count > 0) { for (int i = 0; i < UsingImgPropertyL.Count - 1; i++) { UsingImgPropertyList += UsingImgPropertyL[i] + ","; } UsingImgPropertyList += UsingImgPropertyL[UsingImgPropertyL.Count - 1]; } if (UsingOtherPropertyL.Count > 0) { for (int i = 0; i < UsingOtherPropertyL.Count - 1; i++) { UsingOtherPropertyList += UsingOtherPropertyL[i] + ","; } UsingOtherPropertyList += UsingOtherPropertyL[UsingOtherPropertyL.Count - 1]; } DataRow newRow = dt.NewRow(); newRow["STDId"] = kv.Key; newRow["StrName"] = kv.Value.StrName; newRow["Color"] = kv.Value.Color; newRow["KeyElementList"] = kv.Value.KeyElementList; newRow["SubElementList"] = kv.Value.SubElementList; newRow["UsingImgPropertyList"] = UsingImgPropertyList; newRow["UsingOtherPropertyList"] = UsingOtherPropertyList; newRow["Expression"] = kv.Value.Expression; newRow["Hardness"] = kv.Value.Hardness; newRow["Density"] = kv.Value.Density; newRow["Electrical_conductivity"] = kv.Value.Electrical_conductivity; newRow["BSE"] = int.Parse(kv.Value.BSE); newRow["Formula"] = kv.Value.Formula; newRow["Element"] = kv.Value.Element; newRow["GroupId"] = int.Parse(kv.Value.GroupId); newRow["ListNum"] = kv.Value.ListNum; dt.Rows.Add(newRow); } m_dataAdapter.Update(ds,"ClassifySTD"); //m_dataAdapter.Update(ds, "ClassifySTD_Backup"); //Dictionary MineralElements = new Dictionary(); //foreach (KeyValuePair kv in STDDictionary) //{ // string[] ConstantsStr = kv.Value.Element.Split(','); // //string[] ConstantsStrnew=new // //for (int i = 0; i < ConstantsStr.Length; i++) // //{ // //} // for (int i = 0; i < ConstantsStr.Length; i++) // { // string[] ConstantsStr2 = ConstantsStr[i].Split(':'); // double elementPercentage=0; // if (ConstantsStr2.Length == 2) // { // if (double.TryParse(ConstantsStr2[1], out elementPercentage) && m_SubMidWindow.m_STDEditor.comboBox_PeriodicTable.Items.Contains(ConstantsStr2[0])) // { // int elementID = GetelementID(ConstantsStr2[0]); // string insertstr = "Insert into MineralElements(mineralID,elementID,elementName,elementPercentage)"; // string aa="values(" + kv.Key + ",'" + elementID + "','" + ConstantsStr2[0] + "','" + elementPercentage + "')"; // cmm.CommandText = insertstr+aa; // cmm.ExecuteNonQuery(); // } // } // } //} m_dbConnection.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return false; } return true; } //int GetelementID(string elementName) //{ // int elementID = 0; // switch (elementName) // { // case "H": // elementID = 1; // break; // case "He": // elementID = 2; // break; // case "Li": // elementID = 3; // break; // case "Be": // elementID = 4; // break; // case "B": // elementID = 5; // break; // case "C": // elementID = 6; // break; // case "N": // elementID = 7; // break; // case "O": // elementID = 8; // break; // case "F": // elementID = 9; // break; // case "Ne": // elementID = 10; // break; // case "Na": // elementID = 11; // break; // case "Mg": // elementID = 12; // break; // case "Al": // elementID = 13; // break; // case "Si": // elementID = 14; // break; // case "P": // elementID = 15; // break; // case "S": // elementID = 16; // break; // case "Cl": // elementID = 17; // break; // case "Ar": // elementID = 18; // break; // case "K": // elementID = 19; // break; // case "Ca": // elementID = 20; // break; // case "Sc": // elementID = 21; // break; // case "Ti": // elementID = 22; // break; // case "V": // elementID = 23; // break; // case "Cr": // elementID = 24; // break; // case "Mn": // elementID = 25; // break; // case "Fe": // elementID = 26; // break; // case "Co": // elementID = 27; // break; // case "Ni": // elementID = 28; // break; // case "Cu": // elementID = 29; // break; // case "Zn": // elementID = 30; // break; // case "Ga": // elementID = 31; // break; // case "Ge": // elementID = 32; // break; // case "As": // elementID = 33; // break; // case "Se": // elementID = 34; // break; // case "Br": // elementID = 35; // break; // case "Kr": // elementID = 36; // break; // case "Rb": // elementID = 37; // break; // case "Sr": // elementID = 38; // break; // case "Y": // elementID = 39; // break; // case "Zr": // elementID = 40; // break; // case "Nb": // elementID = 41; // break; // case "Mo": // elementID = 42; // break; // case "Tc": // elementID = 43; // break; // case "Ru": // elementID = 44; // break; // case "Rh": // elementID = 45; // break; // case "Pd": // elementID = 46; // break; // case "Ag": // elementID = 47; // break; // case "Cd": // elementID = 48; // break; // case "In": // elementID = 49; // break; // case "Sn": // elementID = 50; // break; // case "Sb": // elementID = 51; // break; // case "Te": // elementID = 52; // break; // case "I": // elementID = 53; // break; // case "Xe": // elementID = 54; // break; // case "Cs": // elementID = 55; // break; // case "Ba": // elementID = 56; // break; // case "La": // elementID = 57; // break; // case "Ce": // elementID = 58; // break; // case "Pr": // elementID = 59; // break; // case "Nd": // elementID = 60; // break; // case "Pm": // elementID = 61; // break; // case "Sm": // elementID = 62; // break; // case "Eu": // elementID = 63; // break; // case "Gd": // elementID = 64; // break; // case "Tb": // elementID = 65; // break; // case "Dy": // elementID = 66; // break; // case "Ho": // elementID = 67; // break; // case "Er": // elementID = 68; // break; // case "Tm": // elementID = 69; // break; // case "Yb": // elementID = 70; // break; // case "Lu": // elementID = 71; // break; // case "Hf": // elementID = 72; // break; // case "Ta": // elementID = 73; // break; // case "W": // elementID = 74; // break; // case "Re": // elementID = 75; // break; // case "Os": // elementID = 76; // break; // case "Ir": // elementID = 77; // break; // case "Pt": // elementID = 78; // break; // case "Au": // elementID = 79; // break; // case "Hq": // elementID = 80; // break; // case "TI": // elementID = 81; // break; // case "Pb": // elementID = 82; // break; // case "Bi": // elementID = 83; // break; // case "Po": // elementID = 84; // break; // case "At": // elementID = 85; // break; // case "Rn": // elementID = 86; // break; // case "Fr": // elementID = 87; // break; // case "Ra": // elementID = 88; // break; // case "Ac": // elementID = 89; // break; // case "Th": // elementID = 90; // break; // case "Pa": // elementID = 91; // break; // case "U": // elementID = 92; // break; // case "Np": // elementID = 93; // break; // case "Pu": // elementID = 94; // break; // case "Am": // elementID = 95; // break; // case "Cm": // elementID = 96; // break; // case "Bk": // elementID = 97; // break; // case "Cf": // elementID = 98; // break; // case "Es": // elementID = 99; // break; // case "Fm": // elementID = 100; // break; // case "Mc": // elementID = 101; // break; // case "No": // elementID = 102; // break; // case "Lr": // elementID = 103; // break; // case "Rf": // elementID = 104; // break; // case "Db": // elementID = 105; // break; // case "Sg": // elementID = 106; // break; // case "Bh": // elementID = 107; // break; // case "Hs": // elementID = 108; // break; // case "Mt": // elementID = 109; // break; // case "Ds": // elementID = 110; // break; // case "Rg": // elementID = 111; // break; // case "Unb": // elementID = 112; // break; // } // return elementID; //} public int AddSTDDictionaryItem() { STDdata new_STDdata = new STDdata();//定义一个TreeNode节点对象 new_STDdata.Hardness = "1"; new_STDdata.Density = "1"; new_STDdata.Electrical_conductivity = "1"; new_STDdata.BSE = "1"; new_STDdata.Formula = "1"; new_STDdata.Element = "1"; new_STDdata.StrName = "NewRuleName"; //new_STDdata.Expression = "NewRules"; new_STDdata.Expression = ""; new_STDdata.KeyElementList = ""; new_STDdata.SubElementList = ""; new_STDdata.Color = colorRGBtoHx16(Color.Gray.R, Color.Gray.G, Color.Gray.B); int STDId = 40000; foreach (KeyValuePair kv in STDDictionary) { if (STDId < kv.Key) { STDId = kv.Key; } } STDDictionary.Add(STDId + 1, new_STDdata); return STDId + 1; } public void RemoveSTDDictionaryItem(int STDId) { STDDictionary.Remove(STDId); } public void ChangeStrName(int RowNum, string NewStrName) { STDDictionary[(int)m_STDRuleslist.Grid_Minerals[RowNum, 0].Tag].StrName = NewStrName; m_Attributes.Grid_Attributes[2, 1].Value = NewStrName; } public void ChangeSTDRulesLISTBackColor() { int stdid=m_STDRuleslist.ChangeSTDRulesLISTBackColor(); if (stdid != -1) { m_SubMidWindow.m_STDEditor.SelSTDXray(stdid, STDDictionary[stdid]); } } public void ChangeSTDRuleName(String RuleName) { m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value = RuleName; } public void SetNull() { m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text = ""; for (int i = 1; i= 0) { GroupIdDictionaryFromId.Clear(); GroupIdDictionaryFromName.Clear(); GroupIdDictionaryFromId.Add(0, ""); GroupIdDictionaryFromName.Add("", 0); List ss = new List(); foreach (DataRow item in dt.Rows) { ss.Add(item["name"].ToString()); GroupIdDictionaryFromName.Add(item["name"].ToString(), int.Parse(item["id"].ToString())); GroupIdDictionaryFromId.Add(int.Parse(item["id"].ToString()),item["name"].ToString()); } SourceGrid.Cells.Editors.ComboBox GroupIdCBBox = new SourceGrid.Cells.Editors.ComboBox(typeof(string)); GroupIdCBBox.StandardValues = ss; GroupIdCBBox.EditableMode = SourceGrid.EditableMode.SingleClick| SourceGrid.EditableMode.Focus; m_Attributes.Grid_Attributes[10, 1] = new SourceGrid.Cells.Cell("", GroupIdCBBox); } } //string ConstantsStr = dt.Rows[0][0].ToString(); m_dbConnection.Close(); } catch (Exception ee) { MessageBox.Show(ee.ToString()); } } private void ribbon_GroupNameMaintenance_Click(object sender, EventArgs e) { Form_GroupId form_GroupId = new Form_GroupId(STDDBAddress); DialogResult dialogResult = form_GroupId.ShowDialog(); if (dialogResult == DialogResult.Yes) { AddSTDGroupsToAttribute(); } } private void ribbon_Exit_Click(object sender, EventArgs e) { this.Close(); } #region XML文档部分代码 //string Address = Application.StartupPath + "\\Config\\SysData\\OTSParticleSTD.xml"; //string Address_backup = Application.StartupPath + "\\Config\\SysData\\OTSParticleSTD_backup.xml"; //private void Form_ConstantsEditor2_Load(object sender, EventArgs e) //{ // //XmlDocument doc = new XmlDocument(); // //doc.Load(Address); // //doc.Load(Address_backup); // //LoadXmlToDictionary(doc, ref STDDictionary); //} //private void rbRecover_Click(object sender, EventArgs e) //{ // try // { // //System.IO.File.Copy(Address_backup, Address, true); // //XmlDocument doc = new XmlDocument(); // //doc.Load(Address); // //LoadXmlToDictionary(doc, ref STDDictionary); // } //} //void LoadXmlToDictionary(XmlDocument xml, ref Dictionary STDDictionary) //{ // XmlNode root = xml.SelectSingleNode("XMLData"); // XmlNodeList root2 = root.SelectNodes("Collection"); // for (int j = 0; j < root2.Count; j++) // { // if (root2[j].Attributes["RegName"].Value.ToString() == "STDList") // { // XmlNodeList childlist = root2[j].ChildNodes; // for (int i = 0; i < childlist.Count; i++) // { // //BSE、化学式、元素 // string strBseValue = string.Empty; // string strFormula = string.Empty; // string strElement = string.Empty; // if (childlist[i].Attributes["BSE"] != null) // { // strBseValue = childlist[i].Attributes["BSE"].Value; // } // if (childlist[i].Attributes["Formula"] != null) // { // strFormula = childlist[i].Attributes["Formula"].Value; // } // if (childlist[i].Attributes["Element"] != null) // { // strElement = childlist[i].Attributes["Element"].Value; // } // STDdata new_STDdata = new STDdata();//定义一个TreeNode节点对象 // new_STDdata.Hardness = childlist[i].Attributes["Hardness"].Value; // new_STDdata.Density = childlist[i].Attributes["Density"].Value; // new_STDdata.Electrical_conductivity = childlist[i].Attributes["Electrical_conductivity"].Value; // new_STDdata.BSE = strBseValue; // new_STDdata.Formula = strFormula; // new_STDdata.Element = strElement; // new_STDdata.StrName = childlist[i].Attributes["StrName"].Value; // new_STDdata.Expression = childlist[i].Attributes["Expression"].Value; // new_STDdata.STDId = childlist[i].Attributes["STDId"].Value; // new_STDdata.Color = childlist[i].Attributes["Color"].Value; // new_STDdata.KeyElementList = childlist[i].Attributes["KeyElementList"].Value; // new_STDdata.SubElementList = childlist[i].Attributes["SubElementList"].Value; // STDDictionary.Add(int.Parse(childlist[i].Attributes["STDId"].Value), new_STDdata); // } // } // } // XmlNode root3 = root.SelectSingleNode("Member"); // string ConstantsStr = root3.Attributes["value"].Value; // ConstantsStr = ConstantsStr.Replace(" ", ""); // string[] ConstantsStr2 = ConstantsStr.Split(','); // m_SubMidWindow.m_STDEditor.comboBox_Constants.Items.Clear(); // m_SubMidWindow.m_STDEditor.comboBox_Constants.Items.AddRange(ConstantsStr2); //} ////保存xmltree内容到xml文件 //void SaveXmlTreeDataToXml(string Address) //{ // #region text // //XElement xele = XElement.Load(Address); // //var item = (from ele1 in xele.Elements("Collection") // // where ele1.Attribute("RegName").Value.Equals("STDList") // // select ele1).FirstOrDefault(); // //if (item != null) // //{ // // item.Remove(); // //} // //xele.Save(Address); // #endregion // XDocument xdoc = XDocument.Load(Address); // IEnumerable elements = from ele in xdoc.Descendants("XMLData") select ele; // var item = (from ele1 in elements.Elements("Collection") // where ele1.Attribute("RegName").Value.Equals("STDList") // select ele1).FirstOrDefault(); // if (item != null) // { // item.Remove(); // } // XElement STD = new XElement("Collection"); // STD.SetAttributeValue("RegName", "STDList"); // elements.ElementAt(0).Add(STD); // foreach (KeyValuePair kv in STDDictionary) // { // string UsingElementList = ""; // string UsingImgPropertyList = ""; // string UsingOtherPropertyList = ""; // List UsingElementL = new List(); // List UsingImgPropertyL = new List(); // List UsingOtherPropertyL = new List(); // string str_RemoveBlank = kv.Value.Expression; // //forth_elem干扰or分隔符,故先行去掉 // if (str_RemoveBlank.Contains("forth_elem")) // { // str_RemoveBlank = str_RemoveBlank.Replace("forth_elem", ""); // UsingOtherPropertyList = "forth_elem,"; // } // str_RemoveBlank = str_RemoveBlank.Replace(" ", ""); // string[] str_Removeand = System.Text.RegularExpressions.Regex.Split(str_RemoveBlank, "and", System.Text.RegularExpressions.RegexOptions.None); // List str_Removeandor = new List(); // for (int i = 0; i < str_Removeand.Length; i++) // { // str_Removeandor.AddRange(System.Text.RegularExpressions.Regex.Split(str_Removeand[i], "or", System.Text.RegularExpressions.RegexOptions.None)); // } // List list_all = new List(); // for (int i = 0; i < str_Removeandor.Count; i++) // { // list_all.AddRange(str_Removeandor[i].Split(new char[] { '+', '-', '*', '/', '=', '>', '<', '(', ')' })); // } // for (int i = 0; i < list_all.Count; i++) // { // //周期元素? // if (m_SubMidWindow.m_STDEditor.comboBox_PeriodicTable.Items.Contains(list_all[i])) // { // if (!UsingElementL.Contains(list_all[i])) // { // UsingElementL.Add(list_all[i]); // } // } // //first_elem? // if (m_SubMidWindow.m_STDEditor.comboBox_Elem1.Items.Contains(list_all[i])) // { // if (!UsingOtherPropertyL.Contains(list_all[i])) // { // UsingOtherPropertyL.Add(list_all[i]); // } // } // //Element1? // if (m_SubMidWindow.m_STDEditor.comboBox_Elem.Items.Contains(list_all[i])) // { // if (!UsingOtherPropertyL.Contains(list_all[i])) // { // UsingOtherPropertyL.Add(list_all[i]); // } // } // //其它元素? // if (m_SubMidWindow.m_STDEditor.comboBox_ImgProperty.Items.Contains(list_all[i])) // { // if (!UsingImgPropertyL.Contains(list_all[i])) // { // UsingImgPropertyL.Add(list_all[i]); // } // } // } // if (UsingElementL.Count > 0) // { // for (int i = 0; i < UsingElementL.Count - 1; i++) // { // UsingElementList += UsingElementL[i] + ","; // } // UsingElementList += UsingElementL[UsingElementL.Count - 1]; // } // if (UsingImgPropertyL.Count > 0) // { // for (int i = 0; i < UsingImgPropertyL.Count - 1; i++) // { // UsingImgPropertyList += UsingImgPropertyL[i] + ","; // } // UsingImgPropertyList += UsingImgPropertyL[UsingImgPropertyL.Count - 1]; // } // if (UsingOtherPropertyL.Count > 0) // { // for (int i = 0; i < UsingOtherPropertyL.Count - 1; i++) // { // UsingOtherPropertyList += UsingOtherPropertyL[i] + ","; // } // UsingOtherPropertyList += UsingOtherPropertyL[UsingOtherPropertyL.Count - 1]; // } // XElement EleName = new XElement("Member"); // EleName.SetAttributeValue("STDId", kv.Key); // EleName.SetAttributeValue("StrName", kv.Value.StrName); // EleName.SetAttributeValue("Color", kv.Value.Color); // //EleName.SetAttributeValue("UsingElementList", UsingElementList); // EleName.SetAttributeValue("KeyElementList", kv.Value.KeyElementList); // EleName.SetAttributeValue("SubElementList", kv.Value.SubElementList); // EleName.SetAttributeValue("UsingImgPropertyList", UsingImgPropertyList); // EleName.SetAttributeValue("UsingOtherPropertyList", UsingOtherPropertyList); // EleName.SetAttributeValue("Expression", kv.Value.Expression); // EleName.SetAttributeValue("Hardness", kv.Value.Hardness); // EleName.SetAttributeValue("Density", kv.Value.Density); // EleName.SetAttributeValue("Electrical_conductivity", kv.Value.Electrical_conductivity); // EleName.SetAttributeValue("BSE", kv.Value.BSE); // EleName.SetAttributeValue("Formula", kv.Value.Formula); // EleName.SetAttributeValue("Element", kv.Value.Element); // STD.Add(EleName); // } // xdoc.Save(Address); //} #endregion private void rbClose_Click(object sender, EventArgs e) { if (m_STDRuleslist.Grid_Minerals.RowsCount > 1) { if ((m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") && CheckAttributes() && Checktextbox_STDEditor()) { SaveDataOfSelRule(m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0); } else { return; } } else { STDDictionaryInitial.Clear(); } if (!EqualsBetweenDictionary(STDDictionaryInitial, STDDictionary) || IsModified) { DialogResult dr = MessageBox.Show("是否保存当前修改", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { FormForWaiting forWaiting = new FormForWaiting(); forWaiting.Show(); bool result = SaveDictionaryToClassify(STDDBAddress); if (result) { m_SubMidWindow.m_STDEditor.SaveSTDXray(); forWaiting.Close(); } else { forWaiting.Close(); MessageBox.Show(table["message2"].ToString(), table["message32"].ToString()); } } } m_Attributes.Close(); m_STDRuleslist.Close(); m_SubMidWindow.m_STDEditor.Close(); m_SubMidWindow.m_ComparativeLibrary.Close(); m_SubMidWindow.Close(); ButtonStatusClose(); if (this.Text.Split(' ').Count() != 0) { this.Text = this.Text.Split(' ')[0]; } } private void rbOpen_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "(*.db)|*.db"; openFileDialog.RestoreDirectory = true; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { try { STDDBAddress = openFileDialog.FileName; InitForms(STDDBAddress); this.Text = this.Text.Split(' ')[0] + " " + STDDBAddress; IsModified = false; } catch/*(Exception ex)*/ { MessageBox.Show(table["message6"].ToString(), table["message32"].ToString()); } } } void ButtonStatusOpen() { rbOpen.Enabled = false; rbClose.Enabled = true; //rbRecover.Enabled = true; rbBackup.Enabled = true; rbSave.Enabled = true; ribbon_ZeroRules.Enabled = true; ribbon_ESDMaxRules.Enabled = true; ribbon_UserConstants.Enabled = true; ribbon_GroupNameMaintenance.Enabled = true; ribbon_BulkImport.Enabled = true; } void ButtonStatusClose() { rbOpen.Enabled = true; rbClose.Enabled = false; //rbRecover.Enabled = false; rbBackup.Enabled = false; rbSave.Enabled = false; ribbon_ZeroRules.Enabled = false; ribbon_ESDMaxRules.Enabled = false; ribbon_UserConstants.Enabled = false; ribbon_GroupNameMaintenance.Enabled = false; ribbon_BulkImport.Enabled = false; } void InitForms(string DBAddress) { STDDictionary.Clear(); bool ret = LoadClassifyToDictionary(DBAddress, ref STDDictionary); STDDictionaryInitial = Clone(STDDictionary) as Dictionary; if (!ret) { return; } ButtonStatusOpen(); m_STDRuleslist = new STDRuleslist(this); m_Attributes = new Attributes(this); m_SubMidWindow = new SubMidWindow(this); m_DockWindow = new OTSDockWindow(this); m_DockWindow.CreateMainWindow(); if (m_SubMidWindow.m_STDEditor.m_sc != null) { m_SubMidWindow.m_STDEditor.m_sc.CloseDB(); } m_SubMidWindow.m_STDEditor.m_sc = new SqlLiteClass(DBAddress); LoadConstants(DBAddress); m_SubMidWindow.m_STDEditor.textbox_STDEditor.Text = ""; if (m_STDRuleslist.Grid_Minerals.RowsCount > 1) { Position pos = new Position(1, 0); m_STDRuleslist.Grid_Minerals[1, 0].Grid.Select(); m_STDRuleslist.Grid_Minerals.Selection.Focus(pos, true); ChangeSTDEditorAndGrid_Attributes(int.Parse(m_STDRuleslist.Grid_Minerals[1, 0].Tag.ToString())); m_STDRuleslist.button_UpOrder.Enabled = false; } } private void ribbon_BulkImport_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "(*.db)|*.db"; openFileDialog.RestoreDirectory = true; openFileDialog.FilterIndex = 1; openFileDialog.Title = table["message33"].ToString(); if (openFileDialog.ShowDialog() == DialogResult.OK) { try { System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection("data source='" + openFileDialog.FileName + "'"); m_dbConnection.Open(); if(STDDictionary.Count==0) { MessageBox.Show(table["message27"].ToString(), table["message32"].ToString()); return; } string STDId = m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row,m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Column].Tag.ToString(); bool ret = false;//搜索结果 for(int i=0;i< STDDictionary.Count;i++) { STDEditor.Result result = m_SubMidWindow.m_STDEditor.ImportFromResult(STDDictionary.Keys.ElementAt(i).ToString(), m_dbConnection); if (result == STDEditor.Result.Success) { ret = true; } else if(result == STDEditor.Result.Fail) { return; } } if (!ret) { MessageBox.Show(table["message34"].ToString(), table["message32"].ToString()); } int color = Convert.ToInt32(m_SubMidWindow.m_STDEditor.ParseRGB(STDRuleslist.colorHx16toRGB(STDDictionary[int.Parse(STDId)].Color)).ToString()); for (int j = 0; j < m_SubMidWindow.m_STDEditor.m_STDXrayList.Count; j++) { if (m_SubMidWindow.m_STDEditor.m_STDXrayList[j].StdID == STDId) { m_SubMidWindow.m_STDEditor.ShowXrayAtlas(color, m_SubMidWindow.m_STDEditor.m_STDXrayList[j].XrayData); break; } } m_dbConnection.Close(); } catch(Exception ex) { MessageBox.Show(ex.ToString()); } } } //public bool EqualToDictionary(Dictionary STDDictionary, Dictionary STDDictionaryInitial) //{ // if(STDDictionary.Count!= STDDictionaryInitial.Count) // { // return false; // } // foreach (KeyValuePair kv in STDDictionary) // { // if (!STDDictionaryInitial.ContainsKey(kv.Key)) // { // return false; // } // else // { // if (kv.Value.StrName != STDDictionaryInitial[kv.Key].StrName || kv.Value.Color != STDDictionaryInitial[kv.Key].Color || kv.Value.KeyElementList != STDDictionaryInitial[kv.Key].KeyElementList || kv.Value.SubElementList != STDDictionaryInitial[kv.Key].SubElementList || kv.Value.UsingImgPropertyList != STDDictionaryInitial[kv.Key].UsingImgPropertyList || kv.Value.UsingOtherPropertyList != STDDictionaryInitial[kv.Key].UsingOtherPropertyList || kv.Value.Expression != STDDictionaryInitial[kv.Key].Expression || kv.Value.Hardness != STDDictionaryInitial[kv.Key].Hardness || kv.Value.Density != STDDictionaryInitial[kv.Key].Density || kv.Value.Electrical_conductivity != STDDictionaryInitial[kv.Key].Electrical_conductivity || kv.Value.BSE != STDDictionaryInitial[kv.Key].BSE || kv.Value.Formula != STDDictionaryInitial[kv.Key].Formula || kv.Value.Element != STDDictionaryInitial[kv.Key].Element || kv.Value.GroupId != STDDictionaryInitial[kv.Key].GroupId || kv.Value.ListNum != STDDictionaryInitial[kv.Key].ListNum) // { // return false; // } // } // } // return true; //} bool EqualsBetweenDictionary(Dictionary STDDictionaryInitial, Dictionary STDDictionary) { if(STDDictionaryInitial.Count!= STDDictionary.Count) { return false; } foreach(var key in STDDictionaryInitial.Keys) { if (STDDictionary.Keys.Contains(key)) { if(!STDDictionaryInitial[key].Equals(STDDictionary[key])) { return false; } } else { return false; } } return true; } private void Form_ConstantsEditor2_FormClosing(object sender, FormClosingEventArgs e) { if (m_STDRuleslist.Text != "") { if (m_STDRuleslist.Grid_Minerals.RowsCount > 1) { if ((m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") && CheckAttributes() && Checktextbox_STDEditor()) { SaveDataOfSelRule(m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0); } else { e.Cancel = true; return; } } else { STDDictionaryInitial.Clear(); } if (!EqualsBetweenDictionary(STDDictionaryInitial, STDDictionary)|| IsModified) { DialogResult dr = MessageBox.Show("是否保存当前修改", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { FormForWaiting forWaiting = new FormForWaiting(); forWaiting.Show(); bool result = SaveDictionaryToClassify(STDDBAddress); if (result) { m_SubMidWindow.m_STDEditor.SaveSTDXray(); forWaiting.Close(); } else { forWaiting.Close(); MessageBox.Show(table["message2"].ToString(), table["message32"].ToString()); } } } } #region 老方法,标识判断,总是重复性保存 //if (IsModified) //{ // DialogResult dr = MessageBox.Show("是否保存当前修改", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // if (dr == DialogResult.Yes) // { // if (m_STDRuleslist.Grid_Minerals.RowsCount > 1) // { // if (m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row > 0) // { // if (m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") // { // if (CheckAttributes()) // { // if (Checktextbox_STDEditor()) // { // } // else // { // e.Cancel = true; // return; // } // } // else // { // e.Cancel = true; // return; // } // } // else // { // e.Cancel = true; // return; // } // } // else // { // Position pos = new Position(1, 0); // m_STDRuleslist.Grid_Minerals[1, 0].Grid.Select(); // if (m_STDRuleslist.Grid_Minerals[m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row, 0].Value.ToString().Replace(" ", "").Trim() != "") // { // if (CheckAttributes()) // { // if (Checktextbox_STDEditor()) // { // } // else // { // e.Cancel = true; // return; // } // } // else // { // e.Cancel = true; // return; // } // } // else // { // e.Cancel = true; // return; // } // } // } // rbSave_Click(this, e); // } //} #endregion } } }