public PcGroupAddress(EdGroupAddress row) { this.Selected = false; this.Id = row.Id; this.Name = row.Name; this.KnxAddress = row.KnxAddress; this.Type = row.Type.ToString(); this.DPTName = row.DPTName; //this.IsCommunication = row.IsCommunication; //this.IsRead = row.IsRead; //this.IsWrite = row.IsWrite; this.DefaultValue = row.DefaultValue; this.ReadTimeSpan = row.ReadTimeSpan; this.Actions = ""; if (row.Actions != null) { foreach (DatapointActionNode action in row.Actions) { if (this.Actions.Length > 0) { this.Actions += "/" + action.Name; } else { this.Actions = action.Name; } } } }
/// <summary> /// 添加组地址,检测唯一性 /// </summary> /// <param name="addressList"></param> /// <param name="address"></param> /// <returns></returns> private bool CheckUnique(List <MgGroupAddress> addressList, EdGroupAddress address) { if (addressList != null && addressList.Count > 0) { var item = from i in addressList where i.KnxAddress == address.KnxAddress select i; if (item.Any()) { return(false); } } return(true); }
public MgGroupAddress(EdGroupAddress address) { this.IsSelected = false; this.Id = address.Id; this.Name = address.Name; this.KnxAddress = address.KnxAddress; this.DPTName = address.DPTName; this.IsCommunication = address.IsCommunication; this.IsRead = address.IsRead; this.IsWrite = address.IsWrite; this.IsTransmit = address.IsTransmit; this.IsUpgrade = address.IsUpgrade; this.Priority = address.Priority; this.DefaultValue = address.DefaultValue; this.ReadTimeSpan = address.ReadTimeSpan; this.Actions = ""; }
public static EdGroupAddress GetGroupAddress(string Id) { if (null == Id) { return(null); } EdGroupAddress addr = null; foreach (EdGroupAddress address in MyCache.GroupAddressTable) { if (address.Id == Id) { addr = address; break; } } return(addr); }
private void backWorkerSave_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; int len = this.dataGridView.RowCount; //float i = 0; for (int i = 0; i < len; i++) { float f = (float)i / (len - 1); worker.ReportProgress((int)(f * 100)); DataGridViewRow row = this.dataGridView.Rows[i]; bool isSelected = (bool)row.Cells["IsSelected"].Value; if (isSelected) { EdGroupAddress addr = new EdGroupAddress(); addr.Id = row.Cells["Id"].Value as string; addr.Name = row.Cells["Name"].Value as string; addr.KnxAddress = row.Cells["KnxAddress"].Value as string; addr.DPTName = row.Cells["DPTName"].Value as string; DatapointType dpt = DatapointType.GetTypeNode(addr.DPTName); if (null != dpt) { addr.KnxMainNumber = dpt.KNXMainNumber; addr.KnxSubNumber = dpt.KNXSubNumber; addr.Type = dpt.Type; } addr.IsCommunication = (bool)row.Cells["IsCommunication"].Value; addr.IsRead = (bool)row.Cells["IsRead"].Value; addr.IsWrite = (bool)row.Cells["IsWrite"].Value; addr.IsTransmit = (bool)row.Cells["IsTransmit"].Value; addr.IsUpgrade = (bool)row.Cells["IsUpgrade"].Value; addr.Priority = (KNXPriority)row.Cells["Priority"].Value; addr.Actions = DatapointType.GetActionNodes(addr.DPTName); MyCache.GroupAddressTable.Add(addr); } } }
/// <summary> /// 修改组地址信息 /// </summary> private void ModifyAddress() { if (this.dgvGroupAddress.SelectedRows.Count > 0) { int rowIndex = this.dgvGroupAddress.SelectedRows[0].Cells[0].RowIndex; var item = this.dgvGroupAddress.SelectedRows[0].DataBoundItem as MgGroupAddress; EdGroupAddress address = MyCache.GetGroupAddress(item.Id); if (null != address) { FrmGroupAddress frm = new FrmGroupAddress(DataStatus.Modify); frm.Address = address; var dlgResult = frm.ShowDialog(this); if (dlgResult == DialogResult.OK) { /* 刷新修改的行 */ MgGroupAddress disAddress = new MgGroupAddress(frm.Address); this.dgvGroupAddress.Rows[rowIndex].Cells[1].Value = disAddress.Id; this.dgvGroupAddress.Rows[rowIndex].Cells[2].Value = disAddress.Name; this.dgvGroupAddress.Rows[rowIndex].Cells[3].Value = disAddress.KnxAddress; this.dgvGroupAddress.Rows[rowIndex].Cells[4].Value = disAddress.DPTName; this.dgvGroupAddress.Rows[rowIndex].Cells[5].Value = disAddress.IsCommunication; this.dgvGroupAddress.Rows[rowIndex].Cells[6].Value = disAddress.IsRead; this.dgvGroupAddress.Rows[rowIndex].Cells[7].Value = disAddress.IsWrite; this.dgvGroupAddress.Rows[rowIndex].Cells[8].Value = disAddress.IsTransmit; this.dgvGroupAddress.Rows[rowIndex].Cells[9].Value = disAddress.IsUpgrade; this.dgvGroupAddress.Rows[rowIndex].Cells[10].Value = disAddress.Priority; this.dgvGroupAddress.Rows[rowIndex].Cells[11].Value = disAddress.DefaultValue; this.dgvGroupAddress.Rows[rowIndex].Cells[12].Value = disAddress.ReadTimeSpan; this.dgvGroupAddress.EndEdit(); //Changed = true; } } } }
private void dgvData_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { int rowIndex = e.RowIndex; int colIndex = e.ColumnIndex; if (rowIndex >= 0) { if (11 == colIndex) { string Id = this.dgvData.Rows[rowIndex].Cells["Id"].Value as string; EdGroupAddress addr = MyCache.GetGroupAddress(Id); if ((null != addr) && (null != addr.Actions)) { //画单元格的边界线 Point p1 = new Point(e.CellBounds.Left + e.CellBounds.Width, e.CellBounds.Top); Point p2 = new Point(e.CellBounds.Left + e.CellBounds.Width, e.CellBounds.Top + e.CellBounds.Height); Point p3 = new Point(e.CellBounds.Left, e.CellBounds.Top + e.CellBounds.Height); Point[] ps = new Point[] { p1, p2, p3 }; using (Brush gridBrush = new SolidBrush(this.dgvData.GridColor)) { using (Pen gridLinePen = new Pen(gridBrush, 2)) { Font font = new Font("宋体", 9, FontStyle.Regular);//自定义字体 string seperator = ";"; SizeF sizeSeperator = e.Graphics.MeasureString(seperator, font); float startPos = .0f; //判断当前行是否为选中行,如果为选中行,则要修改图片的背景色和文字的字体颜色 if (this.dgvData.CurrentRow.Index == e.RowIndex) { using (Brush backColorBrush = new SolidBrush(Color.FromArgb(051, 153, 255))) { //以背景色填充单元格 e.Graphics.FillRectangle(backColorBrush, e.CellBounds); e.Graphics.DrawLines(gridLinePen, ps); foreach (DatapointActionNode action in addr.Actions) { if (startPos >= e.CellBounds.Width) { break; } if (startPos > 0) { e.Graphics.DrawString(seperator, font, Brushes.White, new RectangleF(e.CellBounds.Left + startPos, e.CellBounds.Top + (e.CellBounds.Height - sizeSeperator.Height) / 2, e.CellBounds.Width - startPos, sizeSeperator.Height), StringFormat.GenericDefault); startPos += sizeSeperator.Width; } SizeF sizeText = e.Graphics.MeasureString(action.Name, font); e.Graphics.DrawString(action.Name, font, Brushes.White, new RectangleF(e.CellBounds.Left + startPos, e.CellBounds.Top + (e.CellBounds.Height - sizeText.Height) / 2, e.CellBounds.Width - startPos, sizeText.Height), StringFormat.GenericDefault); startPos += sizeText.Width; } e.Handled = true; } } else { using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor)) { e.Graphics.FillRectangle(backColorBrush, e.CellBounds); e.Graphics.DrawLines(gridLinePen, ps); foreach (DatapointActionNode action in addr.Actions) { if (startPos >= e.CellBounds.Width) { break; } if (startPos > 0) { e.Graphics.DrawString(seperator, font, Brushes.Black, new RectangleF(e.CellBounds.Left + startPos, e.CellBounds.Top + (e.CellBounds.Height - sizeSeperator.Height) / 2, e.CellBounds.Width - startPos, sizeSeperator.Height), StringFormat.GenericDefault); startPos += sizeSeperator.Width; } if (startPos >= e.CellBounds.Width) { break; } SizeF sizeText = e.Graphics.MeasureString(action.Name, e.CellStyle.Font); e.Graphics.DrawString(action.Name, e.CellStyle.Font, Brushes.Blue, new RectangleF(e.CellBounds.Left + startPos, e.CellBounds.Top + (e.CellBounds.Height - sizeText.Height) / 2, e.CellBounds.Width - startPos, sizeText.Height), StringFormat.GenericDefault); startPos += sizeText.Width; } e.Handled = true; } } } } } } } }
private void dgvGroupAddress_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { int rowIndex = e.RowIndex; int colIndex = e.ColumnIndex; if (rowIndex >= 0) { if (15 == colIndex) { string Id = this.dgvGroupAddress.Rows[rowIndex].Cells["Id"].Value as string; EdGroupAddress addr = MgGroupAddress.GetGroupAddress(this.MgAddressList, Id); if ((null != addr) && (null != addr.Actions)) { //画单元格的边界线 Point p1 = new Point(e.CellBounds.Left + e.CellBounds.Width, e.CellBounds.Top); Point p2 = new Point(e.CellBounds.Left + e.CellBounds.Width, e.CellBounds.Top + e.CellBounds.Height); Point p3 = new Point(e.CellBounds.Left, e.CellBounds.Top + e.CellBounds.Height); Point[] ps = new Point[] { p1, p2, p3 }; using (Brush gridBrush = new SolidBrush(this.dgvGroupAddress.GridColor)) { using (Pen gridLinePen = new Pen(gridBrush, 2)) { Font font = new Font("宋体", 9, FontStyle.Regular);//自定义字体 string actions = addr.Actions.ToString(); //判断当前行是否为选中行,如果为选中行,则要修改图片的背景色和文字的字体颜色 if ((null != this.dgvGroupAddress.CurrentRow) && (this.dgvGroupAddress.CurrentRow.Index == e.RowIndex)) { using (Brush backColorBrush = new SolidBrush(Color.FromArgb(051, 153, 255))) { //以背景色填充单元格 e.Graphics.FillRectangle(backColorBrush, e.CellBounds); e.Graphics.DrawLines(gridLinePen, ps); SizeF sizeText = e.Graphics.MeasureString(actions, font); e.Graphics.DrawString(actions, font, Brushes.White, new RectangleF(e.CellBounds.Left, e.CellBounds.Top + (e.CellBounds.Height - sizeText.Height) / 2, e.CellBounds.Width, sizeText.Height), StringFormat.GenericDefault); e.Handled = true; } } else { using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor)) { e.Graphics.FillRectangle(backColorBrush, e.CellBounds); e.Graphics.DrawLines(gridLinePen, ps); SizeF sizeText = e.Graphics.MeasureString(actions, e.CellStyle.Font); e.Graphics.DrawString(actions, e.CellStyle.Font, Brushes.Blue, new RectangleF(e.CellBounds.Left, e.CellBounds.Top + (e.CellBounds.Height - sizeText.Height) / 2, e.CellBounds.Width, sizeText.Height), StringFormat.GenericDefault); e.Handled = true; } } } } } } } }
/// <summary> /// 添加组地址,检测唯一性 /// </summary> /// <param name="addressList"></param> /// <param name="address"></param> /// <returns></returns> private bool CheckUnique(BindingList<EdGroupAddress> addressList, EdGroupAddress address) { if (addressList != null && addressList.Count > 0) { var item = from i in addressList where i.KnxAddress == address.KnxAddress select i; if (item.Any()) { return false; } } return true; }
private void backWorkerSave_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; int len = this.dataGridView.RowCount; //float i = 0; for (int i = 0; i < len; i++) { float f = (float)i / (len-1); worker.ReportProgress((int)(f * 100)); DataGridViewRow row = this.dataGridView.Rows[i]; bool isSelected = (bool)row.Cells["IsSelected"].Value; if (isSelected) { EdGroupAddress addr = new EdGroupAddress(); addr.Id = row.Cells["Id"].Value as string; addr.Name = row.Cells["Name"].Value as string; addr.KnxAddress = row.Cells["KnxAddress"].Value as string; addr.DPTName = row.Cells["DPTName"].Value as string; DatapointType dpt = DatapointType.GetTypeNode(addr.DPTName); if (null != dpt) { addr.KnxMainNumber = dpt.KNXMainNumber; addr.KnxSubNumber = dpt.KNXSubNumber; addr.Type = dpt.Type; } addr.IsCommunication = (bool)row.Cells["IsCommunication"].Value; addr.IsRead = (bool)row.Cells["IsRead"].Value; addr.IsWrite = (bool)row.Cells["IsWrite"].Value; addr.IsTransmit = (bool)row.Cells["IsTransmit"].Value; addr.IsUpgrade = (bool)row.Cells["IsUpgrade"].Value; addr.Priority = (KNXPriority)row.Cells["Priority"].Value; addr.Actions = DatapointType.GetActionNodes(addr.DPTName); MyCache.GroupAddressTable.Add(addr); } } }