private void TableOnTime() { while (true) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Application.StartupPath + "\\tree.xml"); XmlNode nodeTree = xmlDoc.SelectSingleNode("tree"); XmlNode nodePage = nodeTree.SelectSingleNode("监控信息"); foreach (XmlNode cruNode in nodePage) { try { if (cruNode.HasChildNodes && cruNode.ChildNodes[0].Name.Contains("表")) { #region[表格样式] string sql = cruNode.ChildNodes[0].SelectSingleNode("sql").InnerText; string ziti = cruNode.ChildNodes[0].SelectSingleNode("字体").InnerText; ziti = ziti.Replace("[FontFamily: Name=", "").Replace("]", ""); float zihao = (float)(Convert.ToDouble(cruNode.ChildNodes[0].SelectSingleNode("字号").InnerText)); string yangshi = cruNode.ChildNodes[0].SelectSingleNode("样式").InnerText; string yanse = cruNode.ChildNodes[0].SelectSingleNode("颜色").InnerText; yanse = yanse.Substring(yanse.IndexOf("[") + 1, yanse.IndexOf("]") - yanse.IndexOf("[") - 1); DataTable dt = DBHelper.GetDataTable(sql); if (dt != null && dt.Rows.Count != 0)//表格内容不为空 { #region[DataGridView样式] dataGridView1.DefaultCellStyle.Font = new Font(ziti, zihao, (System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle), yangshi, false)); dataGridView1.DefaultCellStyle.ForeColor = Color.FromName(yanse); dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font(ziti, zihao, (System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle), yangshi, false)); dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = dataGridView1.DefaultCellStyle.ForeColor = Color.FromName(yanse); dataGridView1.RowsDefaultCellStyle.Font = new Font(ziti, zihao, (System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle), yangshi, false)); dataGridView1.RowsDefaultCellStyle.ForeColor = Color.FromName(yanse); dataGridView1.RowTemplate.Height = dataGridView1.DefaultCellStyle.Font.Height + 2; #endregion if (this.IsHandleCreated) this.Invoke(MyDelegate, new object[] { 4 }); TableNum = Convert.ToInt32(cruNode.ChildNodes[0].SelectSingleNode("表格代号").InnerText); if (ThreadTxt != null) { ThreadTxt.Abort(); ThreadTxt = null; } DataTable dd = new DataTable(); dd = dt.Clone(); int rows = panel2.Height / (dataGridView1.RowTemplate.Height) - 1; if (TableNum == 4)//检卡仪信息滚动显示 { dd.Rows.Clear(); if (rows < dt.Rows.Count) { for (int i = rows - 1; i >= 0; i--) { try { dd.ImportRow(dt.Rows[i]); } catch { break; } } } else { for (int i = dt.Rows.Count - 1; i >= 0; i--) { try { dd.ImportRow(dt.Rows[i]); } catch { break; } } } SetDatagridview set = new SetDatagridview(datagridview); try { this.Invoke(set, new object[] { dd }); } catch (Exception ee) { if (!ee.Message.Contains("正在中止线程")) ew.MonthErrorWriter(ee.Message + "||" + ee.StackTrace.ToString()); } BroadCast(); } else//井口信息分页显示 { try { int page = 0; int start = 0; int count = dt.Rows.Count; if (count % rows == 0) { page = count / rows; } else { page = count / rows + 1; } //从元数据源复制记录行 for (int j = 0; j < page; j++) { if ((start + rows) > count) { rows = count - start; } dd.Rows.Clear(); for (int i = 0; i < rows; i++) { try { dd.ImportRow(dt.Rows[start + i]); } catch { break; } } start += rows; SetDatagridview set = new SetDatagridview(datagridview); try { this.Invoke(set, new object[] { dd }); } catch (Exception ee) { if (!ee.Message.Contains("正在中止线程")) ew.MonthErrorWriter(ee.Message + "||" + ee.StackTrace.ToString()); } BroadCast(); Thread.Sleep(FormStopTime * 1000); } } catch (Exception ee) { if (!ee.Message.Contains("正在中止线程")) ew.MonthErrorWriter(ee.Message + "||" + ee.StackTrace.ToString()); } } } else { if (ThreadTxt == null) { ThreadTxt = new Thread(RunTxtThread); ThreadTxt.IsBackground = true; ThreadTxt.Start(); } } #endregion } } catch (Exception ee) { if (!ee.Message.Contains("正在中止线程")) ew.MonthErrorWriter(ee.Message + "||" + ee.StackTrace.ToString()); } } Thread.Sleep(1000); } }
private void TableHandleDelegate(XmlNode cruNode) { #region[表格样式] string sql = cruNode.ChildNodes[0].SelectSingleNode("sql").InnerText; string ziti = cruNode.ChildNodes[0].SelectSingleNode("字体").InnerText; ziti = ziti.Replace("[FontFamily: Name=", "").Replace("]", ""); float zihao = (float)(Convert.ToDouble(cruNode.ChildNodes[0].SelectSingleNode("字号").InnerText)); string yangshi = cruNode.ChildNodes[0].SelectSingleNode("样式").InnerText; string yanse = cruNode.ChildNodes[0].SelectSingleNode("颜色").InnerText; yanse = yanse.Substring(yanse.IndexOf("[") + 1, yanse.IndexOf("]") - yanse.IndexOf("[") - 1); DataTable dt; try { dt = DBHelper.GetDataTable(sql); } catch (Exception ee) { if (!ee.Message.Contains("正在中止线程")) ew.MonthErrorWriter(ee.Message + "||" + ee.StackTrace.ToString()); return; } if (dt != null) { #region[DataGridView样式] dataGridView1.DefaultCellStyle.Font = new Font(ziti, zihao, (System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle), yangshi, false)); dataGridView1.DefaultCellStyle.ForeColor = Color.FromName(yanse); dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font(ziti, zihao, (System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle), yangshi, false)); dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = dataGridView1.DefaultCellStyle.ForeColor = Color.FromName(yanse); dataGridView1.RowsDefaultCellStyle.Font = new Font(ziti, zihao, (System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle), yangshi, false)); dataGridView1.RowsDefaultCellStyle.ForeColor = Color.FromName(yanse); dataGridView1.RowTemplate.Height = dataGridView1.DefaultCellStyle.Font.Height + 2; #endregion this.Invoke(MyDelegate, new object[] { 4 }); TableNum = Convert.ToInt32(cruNode.ChildNodes[0].SelectSingleNode("表格代号").InnerText); DataTable dd = new DataTable(); dd = dt.Clone(); #region[计算表格行数页数] int rows = panel2.Height / (dataGridView1.RowTemplate.Height) - 1; int page = 0; int start = 0; int count = dt.Rows.Count; if (count % rows == 0) { page = count / rows; } else { page = count / rows + 1; } #endregion //从元数据源复制记录行 for (int j = 0; j < page; j++) { if ((start + rows) > count) { rows = count - start; } dd.Rows.Clear(); for (int i = 0; i < rows; i++) { try { dd.ImportRow(dt.Rows[start + i]); } catch { break; } } start += rows; set = new SetDatagridview(datagridview); try { if (dd != null) { this.Invoke(set, new object[] { dd }); } } catch (Exception ee) { if (!ee.Message.Contains("正在中止线程")) ew.MonthErrorWriter(ee.Message + "||" + ee.StackTrace.ToString()); } BroadCast(); Thread.Sleep(FormStopTime * 1000); } dd.Dispose(); } #endregion }