C#中数据的传递以及ToolStripProgressBar

代码:

方法一:窗体的代码-->可以直接通过预设的Click事件来实现控制进度条。

public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
   toolStripProgressBar_save.Minimum = 0;
   toolStripProgressBar_save.Maximum = 100;
   toolStripProgressBar_save.Step = 5;
  }
  #region 不涉及数据传输
  private void button_10_Click(object sender, EventArgs e)
  {
   //清空进度表
   toolStripProgressBar_save.Value = 0;
   if(toolStripProgressBar_save.Value<10)
   {
    for (int i=0;i<2;i++)
    {
     toolStripProgressBar_save.PerformStep();
     toolStripLabel_save.Text = toolStripProgressBar_save.Value.ToString() + "%";
    }
   }
  }
  private void button_30_Click(object sender, EventArgs e)
  {
   if (toolStripProgressBar_save.Value < 30)
   {
    for(int i=0;i<4;i++)
    {
     toolStripProgressBar_save.PerformStep();
    }
   }
   toolStripLabel_save.Text = "30%";
  }
  private void button_50_Click(object sender, EventArgs e)
  {
   if (toolStripProgressBar_save.Value < 50)
   {
    for (int i = 0; i < 4; i++)
    {
     toolStripProgressBar_save.PerformStep();
    }
   }
   toolStripLabel_save.Text = "50%";
  }
  private void button_60_Click(object sender, EventArgs e)
  {
   if (toolStripProgressBar_save.Value < 60)
   {
    for (int i = 0; i < 2; i++)
    {
     toolStripProgressBar_save.PerformStep();
    }
   }
   toolStripLabel_save.Text = "60%";
  }
  private void button_80_Click(object sender, EventArgs e)
  {
   if (toolStripProgressBar_save.Value < 80)
   {
    for (int i = 0; i < 4; i++)
    {
     toolStripProgressBar_save.PerformStep();
    }
   }
   toolStripLabel_save.Text = "80%";
  }
  private void button_100_Click(object sender, EventArgs e)
  {
   if (toolStripProgressBar_save.Value < 100)
   {
    for (int i = 0; i < 4; i++)
    {
     toolStripProgressBar_save.PerformStep();
    }
   }
   toolStripLabel_save.Text = "Complete!";
  }
  #endregion
  private void button_save_Click(object sender, EventArgs e)
  {
   Save.Singleton().SaveAll();
  }
 }

方法二:通过调用其他类里的方法来实现对进度条的控制。

注意一:需要using System.Windows.Forms;

注意二:进度条ToolStripProgressBar的权限需要改成Public

public class Save
 {
  private static Save _instance = null;
  private Form1 n = null;
  public void SaveAll()
  {
   getWnd();
   n.toolStripProgressBar_save.Minimum = 0;
   n.toolStripProgressBar_save.Maximum = 100;
   //清空进度表
   n.toolStripProgressBar_save.Value = 0;
   n.toolStripProgressBar_save.Step = 5;
   #region 保存过程-与单独按钮是一样的
   if (n.toolStripProgressBar_save.Value < 10)
   {
    for (int i = 0; i < 2; i++)
    {
     n.toolStripProgressBar_save.PerformStep();
     n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
    }
   }
   Thread.Sleep(1000);
   if (n.toolStripProgressBar_save.Value < 30)
   {
    for (int i = 0; i < 4; i++)
    {
     n.toolStripProgressBar_save.PerformStep();
     n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString()+"%";
    }
   }
   Thread.Sleep(100);
   if (n.toolStripProgressBar_save.Value < 50)
   {
    for (int i = 0; i < 4; i++)
    {
     n.toolStripProgressBar_save.PerformStep();
     n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
    }
   }
   Thread.Sleep(100);
   if (n.toolStripProgressBar_save.Value < 60)
   {
    for (int i = 0; i < 2; i++)
    {
     n.toolStripProgressBar_save.PerformStep();
     n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
    }
   }
   Thread.Sleep(100);
   if (n.toolStripProgressBar_save.Value < 80)
   {
    for (int i = 0; i < 4; i++)
    {
     n.toolStripProgressBar_save.PerformStep();
     n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
    }
   }
   Thread.Sleep(100);
   if (n.toolStripProgressBar_save.Value < 100)
   {
    for (int i = 0; i < 4; i++)
    {
     n.toolStripProgressBar_save.PerformStep();
     n.toolStripLabel_save.Text = n.toolStripProgressBar_save.Value.ToString() + "%";
    }
   }
   n.toolStripLabel_save.Text = "Complete!";
   Thread.Sleep(100);
   #endregion
  }
  //查找当前打开的窗体,必须有这个才能传递数据
  private void getWnd()
  {
   foreach(Form fm in Application.OpenForms)
   {
    if (fm.Name == "Form1")
    {
     n = (Form1)fm;
     break;
    }
   }
  }
  public static Save Singleton()
  {
   if (_instance == null)
   {
    _instance = new Save();
   }
   return _instance;
  }
 }

效果图:(左边为方法一的效果、右边为方法二的效果图)

   

(0)

相关推荐

  • ASP.NET 页面间数据传递方法小结

    0.引言 Web 页面是无状态的,服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用Asp.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确.安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合. 1.数据传递的各种方法和分析 1.1 使用Querystring 方法 QueryString 也叫查询字符串

  • Ruby on Rails中MVC结构的数据传递解析

    如果读者已经开发过基于 Rails 的应用,但对其 MVC 间的数据传递还有诸多困惑,那么恭喜您,本文正是要总结梳理 Rails 数据传递的方法和技巧.Ruby on Rails 3(以下统称为 Rails 3)是当前的主要发布版本,本文所述及的内容和代码都基于此版本. Rails 3 简介 Ruby on Rails 是一个 Ruby 实现.采用 MVC 模式的开源 Web 应用开发框架,能够提供 Web 应用的全套解决方案.它的"习惯约定优于配置"的设计哲理,使得 Web 开发人员

  • Android开发之利用Intent实现数据传递的方法

    本文实例讲述了Android利用Intent实现数据传递的方法.分享给大家供大家参考,具体如下: 在Android开发过程中,很多人都熟悉Intent,这是个用于在多个View之间共享数据的类.本节主要讲述通过点选ListView中的文本,把文本中的URL加载到一个新的页面上,并且打印出来.为了方便,我先把前面一篇<Android开发之利用jsoup解析HTML页面的方法>的代码重新贴一下,因为在上一节后,代码做了少许修改: try { doc = Jsoup.parse(new URL(&q

  • 深入理解Activity之间的数据传递

    Activity之间是没有办法直接传递数据的.Android的设计原则是,用Intent在不同的Activity和进程之间进行通信,但是通常来讲,Intent中只能存入基本数据类型和系统默认支持的比如Uri之类的.那么对于用户自己定义的数据结构是无法直接用Intent来传送的,如果想要通过Intent来传递自定义数据,可以让数据结构实现Parcelable接口,这样就可以把数据放入Intent.但是Intent的传送效率也不是很高,特别是当传递一些如Bitmap的大数据,曾经在有一次遇到过,用I

  • Ajax中数据传递的另一种模式 javascript Object Notation思想(JSON)

    Ajax是"异步javascript和XML"的缩写已经众所周知,然而虽然XML是看上去的重要组成部分,它却不是必须的.一位资深的软件工程师Douglas Crock ford 开发了一个内建于 javascript 的数据格式,称为javascript 对象表示(JSON,javascript Object Notation),意思是直接使用Ajax对象来传递信息,可以读作"Jason". 1. 什么是 JSON JSON概念很简单,JSON 是一种轻量级的数据格

  • Vuejs第九篇之组件作用域及props数据传递实例详解

    本篇资料来于官方文档: http://cn.vuejs.org/guide/components.html#Props 本教程是小编结合官方文档整理的一套更加细致,代码更多更全的教程,特别适合新手阅读. props数据传递 ①组件实例的作用域: 是孤立的,简单的来说,组件和组件之间,即使有同名属性,值也不共享. <div id="app"> <add></add> <del></del> </div> <sc

  • jQuery学习笔记之 Ajax操作篇(二) - 数据传递

    请求数据 我们可以使用 GET.POST 两种方式向后端请求数据,这里以 PHP 为例,假设有测试页面 age.php,用于返回年龄信息,内容为: if(isset($_REQUEST['name']) && $_REQUEST['name'] == 'stephen') { echo '23'; } 当前页面内容为: <div> <a href="age.php">stephen</a> <span>age : <

  • asp.net不同页面间数据传递的多种方法

    1. Get(即使用QueryString显式传递)方式:在url后面跟参数.特点:简单.方便.缺点:字符串长度最长为255个字符:数据泄漏在url中.适用数据:简单.少量.关键的数据.适用范围:传递给自己.传递给另一个目标页面:常用于2个页面间传递数据.用法:例如:url后加?UserID=-,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值. 2. Post方式:通用的方式.利用form提交.特点:最常用的方法.常

  • 深入浅析JavaScript中数据共享和数据传递

    数据共享和数据传递是相辅相成的,我们一起来讨论这个问题.首先要说的是共享和传递都是有作用域的.作用域就是起作用的区域,在同一个作用域数据可以共享,超过这个作用域就是跨作用域,就得用到数据传递了. 作用域 1.ui作用域 每一个ui文件缺省都有对应的ui.js.他们作为一个闭合的作用域.ui.js里根据ui文件里组件的id来获取ui对象;不同的ui文件可以定义相同id的组件.在ui.js里定义的变量只能在这个js里访问. 2.page作用域 每次调用openPage都会打开一个新的page,这个新

  • 解析activity之间数据传递方法的详解

    1  基于消息的通信机制 Intent--------boudle,extra用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等详细介绍下Intent机制Intent包含两部分:1 目的[action]-------要去到哪里去2 内容[category.data]----------路上带些什么,区分性数据和内容性数据简单数据传递: 复制代码 代码如下: Intent intent = new Intent(LoginActivity.this, MainAct

  • WinForm中窗体间的数据传递交互的一些方法

    实际上过去我也写过类似的主题,这里把各种方法总结一下,内容的确基础了一些,所以这篇文章是写给刚刚学习C#的同行们的,希望对大家有些帮助吧!很抱歉,这篇文章没有诡异的bug来勾起大家的兴趣,但是下篇文章我会努力写些有趣的主题的! 在窗体间传递数据的方法比较多: 1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了: 复制代码 代码如下: public class frmMain

  • 基于startActivityForResult方法处理两个Activity之间数据传递问题

    废话不多说了,直接给大家贴代码了. package com.example.testactivityresquest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import

  • IOS 应用之间的跳转和数据传递详解

    说明:本文介绍app如何打开另一个app,并且传递数据. 一.简单说明 新建两个应用,分别为应用A和应用B. 实现要求:在appA的页面中点击对应的按钮,能够打开appB这个应用. 1.新建两个应用,分别为A和B. 142354418874108[1].png 150002248248878[1].png 2.设置应用B的url. 150005160123679[1].png 3.在应用A中编写打开app的代码 150007446066083[1].png 点击之后,会跳转到新的控制器. 注意:

  • Android实现Activities之间进行数据传递的方法

    本文实例讲述了Android实现Activities之间进行数据传递的方法.分享给大家供大家参考.具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(Intent intent);  启动Activity        finish();  结束当前Activity 2. startActivityForResult(Intent intent, int requestCode);  以指定的请求码requestCode启动Activity fini

随机推荐