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

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



添加四个控件:

  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);
              }
        }

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


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值