using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Text; using System.Drawing; using System.Data; using System.Windows.Forms; namespace Mesnac.Controls.Feeding { /// /// 胶料称量监控 /// [ToolboxBitmap(typeof(System.Windows.Forms.DataGridView))] public partial class RecipPlyMonitor : System.Windows.Forms.DataGridView { public RecipPlyMonitor() { InitializeComponent(); InitMethod(); this.Resize += new EventHandler(RecipPlyMonitor_Resize); } public RecipPlyMonitor(IContainer container) { container.Add(this); InitializeComponent(); this.InitMethod(); this.Resize += new EventHandler(RecipPlyMonitor_Resize); } protected void RecipPlyMonitor_Resize(object sender, EventArgs e) { this.SetColumnStyle(); } /// /// 初始化方法 /// private void InitMethod() { this.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //整行选择模式 this.MultiSelect = false; //禁用多行选项 this.ReadOnly = true; //禁止编辑 this.RowTemplate.Height = 38; this.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.ColumnHeadersHeight = 42; this.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.RowHeadersVisible = false; } #region 自定义属性 private bool _bHaveAction; private string _dataName; private DataTable _data; private DataTable _cloneData; private string _currentRecipPlyName1; private int _currentRecipPly1; private string _currentRecipPlyName2; private int _currentRecipPly2; private string _currentRecipPlyName3; private int _currentRecipPly3; private string _currentRecipPlyName4; private int _currentRecipPly4; private string _currentRecipPlyName5; private int _currentRecipPly5; private string _currentRecipPlyName6; private int _currentRecipPly6; private string _currentRecipPlyName7; private int _currentRecipPly7; private string _currentRecipPlyName8; private int _currentRecipPly8; private string _currentRecipPlyName9; private int _currentRecipPly9; private string _currentRecipPlyName10; private int _currentRecipPly10; private string _currentRecipPlyName11; private int _currentRecipPly11; private string _currentRecipPlyName12; private int _currentRecipPly12; private string _currentRecipPlyName13; private int _currentRecipPly13; private string _currentRecipPlyName14; private int _currentRecipPly14; private string _currentRecipPlyName15; private int _currentRecipPly15; private string _plyCurrentValueName1; private double _plyCurrentValue1; //胶料实际值 private string _plyCurrentValueName2; private double _plyCurrentValue2; private string _plyCurrentValueName3; private double _plyCurrentValue3; private string _plyCurrentValueName4; private double _plyCurrentValue4; private string _plyCurrentValueName5; private double _plyCurrentValue5; private string _plyCurrentValueName6; private double _plyCurrentValue6; private string _plyCurrentValueName7; private double _plyCurrentValue7; private string _plyCurrentValueName8; private double _plyCurrentValue8; private string _plyCurrentValueName9; private double _plyCurrentValue9; private string _plyCurrentValueName10; private double _plyCurrentValue10; private string _plyCurrentValueName11; private double _plyCurrentValue11; private string _plyCurrentValueName12; private double _plyCurrentValue12; private string _plyCurrentValueName13; private double _plyCurrentValue13; private string _plyCurrentValueName14; private double _plyCurrentValue14; private string _plyCurrentValueName15; private double _plyCurrentValue15; private int _endAndWaitPloy = 0; private string _endAndWaitPloyName; #region 动画属性 /// /// 是否有动画 /// public bool HaveAction { get { return _bHaveAction; } set { _bHaveAction = value; } } /// /// 数据源动画属性 /// public string DataName { get { return _dataName; } set { _dataName = value; } } #region 当前称量胶料动画属性 /// /// 称量的第一种胶料动画属性 /// public string CurrentRecipPlyName1 { get { return _currentRecipPlyName1; } set { _currentRecipPlyName1 = value; } } /// /// 称量的第二种胶料动画属性 /// public string CurrentRecipPlyName2 { get { return _currentRecipPlyName2; } set { _currentRecipPlyName2 = value; } } /// /// 称量的第三种胶料动画属性 /// public string CurrentRecipPlyName3 { get { return _currentRecipPlyName3; } set { _currentRecipPlyName3 = value; } } /// /// 称量的第四种胶料动画属性 /// public string CurrentRecipPlyName4 { get { return _currentRecipPlyName4; } set { _currentRecipPlyName4 = value; } } /// /// 称量的第五种胶料动画属性 /// public string CurrentRecipPlyName5 { get { return _currentRecipPlyName5; } set { _currentRecipPlyName5 = value; } } /// /// 称量的第六种胶料动画属性 /// public string CurrentRecipPlyName6 { get { return _currentRecipPlyName6; } set { _currentRecipPlyName6 = value; } } /// /// 称量的第七种胶料动画属性 /// public string CurrentRecipPlyName7 { get { return _currentRecipPlyName7; } set { _currentRecipPlyName7 = value; } } /// /// 称量的第八种胶料动画属性 /// public string CurrentRecipPlyName8 { get { return this._currentRecipPlyName8; } set { this._currentRecipPlyName8 = value; } } /// /// 称量的第九种胶料动画属性 /// public string CurrentRecipPlyName9 { get { return this._currentRecipPlyName9; } set { this._currentRecipPlyName9 = value; } } /// /// 称量的第十种胶料的动画属性 /// public string CurrentRecipPlyName10 { get { return this._currentRecipPlyName10; } set { this._currentRecipPlyName10 = value; } } /// /// 称量的第十一种胶料的动画属性 /// public string CurrentRecipPlyName11 { get { return this._currentRecipPlyName11; } set { this._currentRecipPlyName11 = value; } } /// /// 称量的第十二种胶料的动画属性 /// public string CurrentRecipPlyName12 { get { return this._currentRecipPlyName12; } set { this._currentRecipPlyName12 = value; } } /// /// 称量的第十三种胶料的动画属性 /// public string CurrentRecipPlyName13 { get { return this._currentRecipPlyName13; } set { this._currentRecipPlyName13 = value; } } /// /// 称量的第十四种胶料的动画属性 /// public string CurrentRecipPlyName14 { get { return this._currentRecipPlyName14; } set { this._currentRecipPlyName14 = value; } } /// /// 称量的第十五种胶料的动画属性 /// public string CurrentRecipPlyName15 { get { return this._currentRecipPlyName15; } set { this._currentRecipPlyName15 = value; } } #endregion #region 胶料实际值动画属性 /// /// 称量的第一种胶料实际值动画属性 /// public string PlyCurrentValueName1 { get { return this._plyCurrentValueName1; } set { this._plyCurrentValueName1 = value; } } /// /// 称量的第二种胶料实际值动画属性 /// public string PlyCurrentValueName2 { get { return _plyCurrentValueName2; } set { this._plyCurrentValueName2 = value; } } /// /// 称量的第三种胶料实际值动画属性 /// public string PlyCurrentValueName3 { get { return this._plyCurrentValueName3; } set { this._plyCurrentValueName3 = value; } } /// /// 称量的第四种胶料实际值动画属性 /// public string PlyCurrentValueName4 { get { return this._plyCurrentValueName4; } set { this._plyCurrentValueName4 = value; } } /// /// 称量的第五种胶料实际值动画属性 /// public string PlyCurrentValueName5 { get { return this._plyCurrentValueName5; } set { this._plyCurrentValueName5 = value; } } /// /// 称量的第六种胶料实际值动画属性 /// public string PlyCurrentValueName6 { get { return this._plyCurrentValueName6; } set { this._plyCurrentValueName6 = value; } } /// /// 称量的第七种胶料实际值动画属性 /// public string PlyCurrentValueName7 { get { return this._plyCurrentValueName7; } set { this._plyCurrentValueName7 = value; } } /// /// 称量的第八种胶料实际值动画属性 /// public string PlyCurrentValueName8 { get { return this._plyCurrentValueName8; } set { this._plyCurrentValueName8 = value; } } /// /// 称量的第九种胶料实际值动画属性 /// public string PlyCurrentValueName9 { get { return this._plyCurrentValueName9; } set { this._plyCurrentValueName9 = value; } } /// /// 称量的第十种胶料实际值动画属性 /// public string PlyCurrentValueName10 { get { return this._plyCurrentValueName10; } set { this._plyCurrentValueName10 = value; } } /// /// 称量的第十一种胶料实际值动画属性 /// public string PlyCurrentValueName11 { get { return this._plyCurrentValueName11; } set { this._plyCurrentValueName11 = value; } } /// /// 称量的第十二种胶料实际值动画属性 /// public string PlyCurrentValueName12 { get { return this._plyCurrentValueName12; } set { this._plyCurrentValueName12 = value; } } /// /// 称量的第十三种胶料实际值动画属性 /// public string PlyCurrentValueName13 { get { return this._plyCurrentValueName13; } set { this._plyCurrentValueName13 = value; } } /// /// 称量的第十四种胶料实际值动画属性 /// public string PlyCurrentValueName14 { get { return this._plyCurrentValueName14; } set { this._plyCurrentValueName14 = value; } } /// /// 称量的第十五种胶料实际值动画属性 /// public string PlyCurrentValueName15 { get { return this._plyCurrentValueName15; } set { this._plyCurrentValueName15 = value; } } #endregion #endregion #region 数据属性 /// /// 数据源 /// public DataTable Data { get { return _data; } set { _data = value; if (this._cloneData == null || this._cloneData.Rows.Count == 0 || this._cloneData.TableName != this._data.TableName) { InitData(); } } } /// /// 初始化数据 /// public void InitData() { try { if (this._cloneData != null) { this.DataSource = null; this._cloneData.Dispose(); this._cloneData = null; } if (this._data != null) { this._cloneData = this._data.Copy(); this.DataSource = this._cloneData; //禁止排序 for (int i = 0; i < this.ColumnCount; i++) { this.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } this.SetColumnStyle(); //清除选中行 this.ClearSelection(); } } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("胶料称监控画面胶料列表控件初始化数据错误InitData:" + ex.Message, ex); } } /// /// 设置列宽 /// private void SetColumnStyle() { lock (String.Empty) { try { //设定初始列宽 if (this.Columns.Contains("名称")) { this.Columns["名称"].Width = 150; } if (this.Columns.Contains("序号")) { this.Columns["序号"].Width = 15; } if (this.Columns.Contains("设定")) { this.Columns["设定"].Width = 100; } if (this.Columns.Contains("实际")) { this.Columns["实际"].Width = 100; } if (this.Columns.Contains("误差")) { this.Columns["误差"].Width = 140; } } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("胶料称监控画面胶料列表控件设置列宽错误SetColumnStyle:" + ex.Message, ex); } } } #region 判断当前称量的胶料 /// /// 称量的第一种胶料 /// public int CurrentRecipPly1 { get { return _currentRecipPly1; } set { _currentRecipPly1 = value; this.RefreshCurrentRow(); } } /// /// 称量的第二种胶料 /// public int CurrentRecipPly2 { get { return _currentRecipPly2; } set { _currentRecipPly2 = value; this.RefreshCurrentRow(); } } /// /// 称量的第三种胶料 /// public int CurrentRecipPly3 { get { return _currentRecipPly3; } set { _currentRecipPly3 = value; this.RefreshCurrentRow(); ; } } /// /// 称量的第四种胶料 /// public int CurrentRecipPly4 { get { return _currentRecipPly4; } set { _currentRecipPly4 = value; this.RefreshCurrentRow(); } } /// /// 称量的第五种胶料 /// public int CurrentRecipPly5 { get { return _currentRecipPly5; } set { _currentRecipPly5 = value; this.RefreshCurrentRow(); } } /// /// 称量的第六种胶料 /// public int CurrentRecipPly6 { get { return _currentRecipPly6; } set { _currentRecipPly6 = value; this.RefreshCurrentRow(); } } /// /// 称量的第七种胶料 /// public int CurrentRecipPly7 { get { return _currentRecipPly7; } set { _currentRecipPly7 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly8 { get { return _currentRecipPly8; } set { _currentRecipPly8 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly9 { get { return _currentRecipPly9; } set { _currentRecipPly9 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly10 { get { return _currentRecipPly10; } set { _currentRecipPly10 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly11 { get { return _currentRecipPly11; } set { _currentRecipPly11 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly12 { get { return _currentRecipPly12; } set { _currentRecipPly12 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly13 { get { return _currentRecipPly13; } set { _currentRecipPly13 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly14 { get { return _currentRecipPly14; } set { _currentRecipPly14 = value; this.RefreshCurrentRow(); } } public int CurrentRecipPly15 { get { return _currentRecipPly15; } set { _currentRecipPly15 = value; this.RefreshCurrentRow(); } } /// /// 称量结束等待送物料 /// [Description("称量结束等待送物料"), Category("PLC")] public int EndAndWaitPloy { get { return _endAndWaitPloy; } set { _endAndWaitPloy = value; if (value == 1)this.RefereshText(); } } /// /// 称量结束等待送物料动画属性 /// public string EndAndWaitPloyName { get { return _endAndWaitPloyName; } set { _endAndWaitPloyName = value; } } #endregion public void RefereshText() { for (int i = 0; i < this._cloneData.Rows.Count; i++) { this.Rows[i].DefaultCellStyle.BackColor = Color.Green; } } /// /// 刷新选中行 /// private void RefreshCurrentRow() { if (this._currentRecipPly15 == 1) { this.CurrentSelectRow(15); } else if (this._currentRecipPly14 == 1) { this.CurrentSelectRow(14); } else if (this._currentRecipPly13 == 1) { this.CurrentSelectRow(13); } else if (this._currentRecipPly12 == 1) { this.CurrentSelectRow(12); } else if (this._currentRecipPly11 == 1) { this.CurrentSelectRow(11); } else if (this._currentRecipPly10 == 1) { this.CurrentSelectRow(10); } else if (this._currentRecipPly9 == 1) { this.CurrentSelectRow(9); } else if (this._currentRecipPly8 == 1) { this.CurrentSelectRow(8); } else if (this._currentRecipPly7 == 1) { this.CurrentSelectRow(7); } else if (this._currentRecipPly6 == 1) { this.CurrentSelectRow(6); } else if (this._currentRecipPly5 == 1) { this.CurrentSelectRow(5); } else if (this._currentRecipPly4 == 1) { this.CurrentSelectRow(4); } else if (this._currentRecipPly3 == 1) { this.CurrentSelectRow(3); } else if (this._currentRecipPly2 == 1) { this.CurrentSelectRow(2); } else if (this._currentRecipPly1 == 1) { this.CurrentSelectRow(1); } //else //{ // this.ClearSelection(); // if (this._cloneData != null && this._cloneData.Rows.Count > 0) // { // for (int i = 0; i < this._cloneData.Rows.Count; i++) // { // this.Rows[i].DefaultCellStyle.BackColor = Color.White; // } // } //} } //选中某一行 private void CurrentSelectRow(int rowIndex) { this.ClearSelection(); if (this._cloneData != null && this._cloneData.Columns.Contains("序号") && this._cloneData.Rows.Count > 0) { if (rowIndex <= this._cloneData.Rows.Count) { DataRow row = this._cloneData.Rows[rowIndex - 1]; object val = row["序号"]; if (val != DBNull.Value) { for (int i = 0; i < rowIndex - 1; i++) { this.Rows[i].DefaultCellStyle.BackColor = Color.Green; } this.Rows[rowIndex - 1].DefaultCellStyle.BackColor = Color.GreenYellow; for (int i = rowIndex; i < this._cloneData.Rows.Count; i++) { this.Rows[i].DefaultCellStyle.BackColor = Color.White; } //this.Rows[rowIndex - 1].Selected = true; this.CurrentCell = this.Rows[rowIndex - 1].Cells[0]; } } else { if (rowIndex > 0) { for (int i = 0; i < this._cloneData.Rows.Count; i++) { this.Rows[i].DefaultCellStyle.BackColor = Color.Green; } } } } } #endregion /// /// 第一种胶料实际值 /// public double PlyCurrentValue1 { get { return _plyCurrentValue1; } set { _plyCurrentValue1 = value; this.RefreshCurrentValue(1, value); } } /// /// 第二种胶料实际值 /// public double PlyCurrentValue2 { get { return this._plyCurrentValue2; } set { this._plyCurrentValue2 = value; this.RefreshCurrentValue(2, value); } } /// /// 第三种胶料实际值 /// public double PlyCurrentValue3 { get { return this._plyCurrentValue3; } set { this._plyCurrentValue3 = value; this.RefreshCurrentValue(3, value); } } /// /// 第四种胶料实际值 /// public double PlyCurrentValue4 { get { return this._plyCurrentValue4; } set { this._plyCurrentValue4 = value; this.RefreshCurrentValue(4, value); } } /// /// 第五种胶料实际值 /// public double PlyCurrentValue5 { get { return this._plyCurrentValue5; } set { this._plyCurrentValue5 = value; this.RefreshCurrentValue(5, value); } } /// /// 第六种胶料实际值 /// public double PlyCurrentValue6 { get { return this._plyCurrentValue6; } set { this._plyCurrentValue6 = value; this.RefreshCurrentValue(6, value); } } /// /// 第七种胶料实际值 /// public double PlyCurrentValue7 { get { return this._plyCurrentValue7; } set { this._plyCurrentValue7 = value; this.RefreshCurrentValue(7, value); } } /// /// 第八种胶料实际值 /// public double PlyCurrentValue8 { get { return this._plyCurrentValue8; } set { this._plyCurrentValue8 = value; this.RefreshCurrentValue(8, value); } } /// /// 第九种胶料实际值 /// public double PlyCurrentValue9 { get { return this._plyCurrentValue9; } set { this._plyCurrentValue9 = value; this.RefreshCurrentValue(9, value); } } /// /// 第十种胶料实际值 /// public double PlyCurrentValue10 { get { return this._plyCurrentValue10; } set { this._plyCurrentValue10 = value; this.RefreshCurrentValue(10, value); } } /// /// 第十一种胶料实际值 /// public double PlyCurrentValue11 { get { return this._plyCurrentValue11; } set { this._plyCurrentValue11 = value; this.RefreshCurrentValue(11, value); } } /// /// 第十二种胶料实际值 /// public double PlyCurrentValue12 { get { return this._plyCurrentValue12; } set { this._plyCurrentValue12 = value; this.RefreshCurrentValue(12, value); } } /// /// 第十三种胶料实际值 /// public double PlyCurrentValue13 { get { return this._plyCurrentValue13; } set { this._plyCurrentValue13 = value; this.RefreshCurrentValue(13, value); } } /// /// 第十四种胶料实际值 /// public double PlyCurrentValue14 { get { return this._plyCurrentValue14; } set { this._plyCurrentValue14 = value; this.RefreshCurrentValue(14, value); } } /// /// 第十五种胶料实际值 /// public double PlyCurrentValue15 { get { return this._plyCurrentValue15; } set { this._plyCurrentValue15 = value; this.RefreshCurrentValue(15, value); } } #region 数据列 /// /// 刷新当前值 /// /// private void RefreshCurrentValue(int index, double value) { this.UpdateCurrentValue(index, value); } private void UpdateCurrentValue(int rowIndex, double value) { try { if (rowIndex < 1) { this.ClearSelection(); } else { if (this._cloneData != null) { if (this._cloneData.Columns.Contains("实际")) { if (rowIndex <= this._cloneData.Rows.Count) { DataRow row = this._cloneData.Rows[rowIndex - 1]; if (row != null) { row["实际"] = value; } } } } } } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("胶料称监控画面胶料列表控件刷新当前值错误:" + ex.Message, ex); } } #endregion #endregion } }