用C#构建一个简单的采集系统之二—采集任务实时显示

2.为了能实时显示每个任务的运行状态,采用TabPage 及TabControl 控件。设计图如下:

用C#构建一个简单的采集系统之二—采集任务实时显示_第1张图片


添加四个控件:

  private void treeView1_MouseUp(object sender, MouseEventArgs e)
        {
            try {
                if (e.Button == MouseButtons.Left)
                {
                    Point ClickPoint = new Point(e.X, e.Y);
                    TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
                    if (CurrentNode != null)//判断你点的是不是一个节点
                    {
                        treeView1.SelectedNode = CurrentNode;//选中这个节点
                    }
                    //如果是上层节点则展开之
                    if (treeView1.SelectedNode.Parent == null)
                    {
                        if (treeView1.SelectedNode.IsExpanded == false)
                        {
                            treeView1.SelectedNode.Expand();
                        }
                    }
                    else
                    {
                        //if (conn==null)
                        //{
                        //    conn = Db.SqlConnection();
                        //    if (conn==null)
                        //    {
                        //        MessageBox.Show("数据库链接失败,程序终止!");
                        //       // return;
                        //    }

                        //}
                        switch(CurrentNode.Index){
                            case 0:
                                addTabControl(CurrentNode.Text, CurrentNode.Text, tabControl1, new UserControl1(conn));
                                break;
                            case 1:
                                addTabControl(CurrentNode.Text, CurrentNode.Text, tabControl1, new UserControl2(conn));
                                break;
                            case 2:
                                addTabControl(CurrentNode.Text, CurrentNode.Text, tabControl1, new UserControl3(conn));
                                break;
                            case 3:
                                addTabControl(CurrentNode.Text, CurrentNode.Text, tabControl1, new UserControl4(conn));
                                break;
                            default:
                                 break;
                        }
                    }
                }
            }
            catch (Exception e3)
            {
                Console.WriteLine("错误信息:"+e3.Message);
                MessageBox.Show("提交超时", "提示信息"+e3.Message);
            }
        }

然后,在文本框中实时显示任务信息:

public delegate void SetTextBoxValue(string value);

        //委托使用文本框
        void SetMyTextBoxValue(string value)
        {
            // Control.InvokeRequired 属性: 获取一个值,该值指示调用方在对控件进行方法调用时
            //是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。
            //当前线程不是创建控件的线程时为true,当前线程中访问是False
            try{
                if (this.richTextBox1.InvokeRequired)
                {
                    SetTextBoxValue objSetTextBoxValue = new SetTextBoxValue(SetMyTextBoxValue);

                    // IAsyncResult 接口:表示异步操作的状态。不同的异步操作需要不同的类型来描述,自然可以返回任何对象。
                    // Control.BeginInvoke 方法 (Delegate):在创建控件的基础句柄所在线程上异步执行指定委托。
                    IAsyncResult result = this.richTextBox1.BeginInvoke(objSetTextBoxValue, new object[] { value });
              
                        objSetTextBoxValue.EndInvoke(result);              
                }
                else
                {              
                    //this.richTextBox1.Text += value + Environment.NewLine;
                    this.richTextBox1.Text += value + "\r\n";
                    this.richTextBox1.SelectionStart = this.richTextBox1.TextLength;
                    this.richTextBox1.ScrollToCaret();
                }
             }catch (Exception e)
              {
                  Console.WriteLine("写文本出错原因:" + e.Message);
              }
        }

再添加滚动条,日期控件,界面基本就完成了。


你可能感兴趣的:(c#学习系列)