Example #1
0
        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);
            }
        }
Example #2
0
        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
        }