private void 添加ToolStripMenuItem_Click(object sender, EventArgs e) { AreaSetting _userActionName = new AreaSetting(); _userActionName.LbName = "命令名称"; if (_userActionName.ShowDialog() == DialogResult.OK) { if (_definedNames != null) { foreach (UserDefinedOperation area in _definedNames) { if (area.Name == _userActionName.AreaName) { Helper.ShowMessageBox("提示", "已存在相同名称!"); return; } } UserDefinedOperation command = new UserDefinedOperation(_userActionName.AreaName); AddCommand(command); } else { UserDefinedOperation command = new UserDefinedOperation(_userActionName.AreaName); _definedNames = new List <UserDefinedOperation>(); _definedNames.Add(command); RefreshAreaList(); } } }
private void 除ToolStripMenuItem_Click(object sender, EventArgs e) { if (Helper.ShowMessageBox("确认", "确认删除此项?") == DialogResult.OK) { if (_definedNames != null && _definedNames.Count > 0 && _selectRowIndex != -1) { UserDefinedOperation command = _definedNames[_selectRowIndex]; DeleteArea(command); } } }
public void DeleteArea(UserDefinedOperation area) { lock (_lock) { if (_definedNames != null) { _definedNames.Remove(area); } RefreshAreaList(); } }
//添加命令 public void AddCommand(UserDefinedOperation area) { lock (_lock) { if (_definedNames != null) { _definedNames.Add(area); } else { Helper.ShowMessageBox("添加失败!", "添加展区失败!"); } RefreshAreaList(); } }
private void dbCommandList_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { _selectRowIndex = e.RowIndex; if (e.Clicks == 1 && e.Button == MouseButtons.Right && e.RowIndex >= 0) { contextMenuStrip.Show(Cursor.Position); } if (_selectRowIndex >= 0 && _currentUserDefinedName != _definedNames[_selectRowIndex]) { _currentUserDefinedName = _definedNames[_selectRowIndex]; if (OnCurrentUserDefinedChanged != null) { OnCurrentUserDefinedChanged(this, null); } dbAreaList.Rows[_selectRowIndex].Selected = true; } }
public void RefreshAreaList() { dbAreaList.Rows.Clear(); _currentUserDefinedName = null; if (_definedNames != null) { foreach (UserDefinedOperation area in _definedNames) { dbAreaList.Rows.Add(area.Name); } } if (dbAreaList.Rows.Count > 0) { dbAreaList.Rows[dbAreaList.Rows.Count - 1].Selected = true; _currentUserDefinedName = _definedNames[dbAreaList.Rows.Count - 1]; } if (OnCurrentUserDefinedChanged != null) { OnCurrentUserDefinedChanged(this, null); } }
public List <UserDefinedOperation> LoadUserDefinedData() { try { #region LoadUserDefinedData XmlDocument config = new XmlDocument(); config.Load(_userdefinedConfigFile); XmlNode root = config.SelectSingleNode("Root"); XmlNodeList actions = root.SelectNodes("Action"); _userdefineNames.Clear(); foreach (XmlNode action in actions) { string _actionName = action.Attributes["Name"].Value; UserDefinedOperation _deName = new UserDefinedOperation(_actionName); XmlNodeList operations = action.SelectNodes("Operation"); foreach (XmlNode operation in operations) { string operationName = operation.SelectSingleNode("OperationName").InnerText; string operationTypeString = operation.SelectSingleNode("OperationType").InnerText; CommunicationType operationType = (CommunicationType)Enum.Parse(typeof(CommunicationType), operationTypeString, true); XmlNode operationSetting = operation.SelectSingleNode("OperationSetting"); object setting = null; if (operationType == CommunicationType.Com) { ComSetting cs = new ComSetting(); cs.ComNumber = operationSetting.SelectSingleNode("ComNumber").InnerText; cs.BaudRate = int.Parse(operationSetting.SelectSingleNode("BaudRate").InnerText); cs.DataBits = int.Parse(operationSetting.SelectSingleNode("DataBit").InnerText); cs.StopBits = int.Parse(operationSetting.SelectSingleNode("StopBit").InnerText); cs.Parity = (Parity)Enum.Parse(typeof(Parity), operationSetting.SelectSingleNode("Parity").InnerText); setting = cs; } else if (operationType == CommunicationType.TCP || operationType == CommunicationType.UDP) { NetworkSetting ns = new NetworkSetting(); ns.Ip = operationSetting.SelectSingleNode("IP").InnerText; ns.Port = int.Parse(operationSetting.SelectSingleNode("Port").InnerText); setting = ns; } string dataTypeString = operation.SelectSingleNode("OperationDataType").InnerText; DataType dataType = (DataType)Enum.Parse(typeof(DataType), dataTypeString, true); string data = operation.SelectSingleNode("OperationData").InnerText; int time = int.Parse(operation.SelectSingleNode("OperationTime").InnerText); UserOperation userOperation = new UserOperation(operationName, operationType, dataType, setting, data, time); _deName.AddOperation(userOperation); } _userdefineNames.Add(_deName); } return(_userdefineNames); #endregion } catch (Exception ex) { Helper.ShowMessageBox("提示", "未找到自定义配置文件"); return(null); } }
//保存自定义配置 public void SaveUserDefinedData(List <UserDefinedOperation> p_userdefineNames) { if (p_userdefineNames != null && p_userdefineNames.Count > 0) { XmlDocument config = new XmlDocument(); XmlNode root = config.CreateNode(XmlNodeType.Element, "Root", null); config.AppendChild(root); for (int i = 0; i < p_userdefineNames.Count; i++) { UserDefinedOperation _currentName = p_userdefineNames[i]; XmlNode action = config.CreateNode(XmlNodeType.Element, "Action", null); XmlAttribute _name = config.CreateAttribute("Name"); _name.Value = _currentName.Name; action.Attributes.Append(_name); for (int _operationcout = 0; _operationcout < _currentName.Operations.Count; _operationcout++) { UserOperation operation = _currentName.Operations[_operationcout]; XmlNode operationNode = config.CreateNode(XmlNodeType.Element, "Operation", null); XmlNode operationName = config.CreateNode(XmlNodeType.Element, "OperationName", null); operationName.InnerText = operation.Name; XmlNode operationType = config.CreateNode(XmlNodeType.Element, "OperationType", null); operationType.InnerText = operation.OpreationType.ToString(); XmlNode operationDataType = config.CreateNode(XmlNodeType.Element, "OperationDataType", null); operationDataType.InnerText = operation.DataType.ToString(); XmlNode operationData = config.CreateNode(XmlNodeType.Element, "OperationData", null); if (operation.DataType == DataType.Hex) { operationData.InnerText = operation.Data.Replace(" ", "").Trim(); } else { operationData.InnerText = operation.Data; } XmlNode operationTime = config.CreateNode(XmlNodeType.Element, "OperationTime", null); operationTime.InnerText = operation.DelayTime.ToString(); XmlNode operationSetting = config.CreateNode(XmlNodeType.Element, "OperationSetting", null); if (operation.Setting as ComSetting != null) { SaveComSetting(config, operation, operationSetting); } else if (operation.Setting as NetworkSetting != null) { SaveIPSetting(config, operation, operationSetting); } operationNode.AppendChild(operationName); operationNode.AppendChild(operationType); operationNode.AppendChild(operationDataType); operationNode.AppendChild(operationData); operationNode.AppendChild(operationTime); operationNode.AppendChild(operationSetting); action.AppendChild(operationNode); } root.AppendChild(action); } config.Save(_userdefinedConfigFile); } }