登录
首页 » C# » c# FlowChart实例,基于winform

c# FlowChart实例,基于winform

于 2019-12-27 发布
0 190
下载积分: 1 下载次数: 0

代码说明:

简单的工作流程序,可进行二次开发

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • ffmpeg保存海康视屏数据
    ffmpeg保存海康视屏数据
    2019-12-16下载
    积分:1
  • C#程序设计经典案例设计与实现
    《Visual C# 2008程序设计经典案例设计与实现》源码下载 第1章 Visual C#2008与窗体界面案例1 飘动动画窗体案例2 透明动画窗体案例3 利用API函数实现动画窗体案例4 闪烁动画窗体案例5 滚动字幕动画窗体案例6 超女卡通窗体案例7 总在最前的登录窗体案例8 在屏幕中央的圓形窗体案例9 半透明的T形窗体案例10 多文档MDI窗体案例11 渐变色窗体案例12 笑脸窗体案例13 八边形图形窗体本章小结第2章 Visual C# 2008与图形图像案例1 动态绘制直线和曲线案例2 动态绘制验证码案例3 椭圓及椭圆弧的绘制案例4 移动鼠标复制坐标区域图像案例5 动态获取当前程序的图标案例6 动态获取系统图标案例7 动态打开、显示和缩放图像案例8 在图像上动态加载文字案例9 水平和垂直遮罩图像动画效果案例10 图像拉伸动画效果案例11 百叶窗图像动画效果案例12 翻转和扩展图像动画效果案例13 图像的纹理和浮雕效果案例14 图像的马赛克效果本章小结第3章 Visual C#2008与多媒体案例1 抛物线动画效果案例2 图像滚动动画效果案例3 飞舞的雪花案例4 电子时钟案例5 Flash动画播放器案例6 AvI动画播放器案例7 GⅣ动画播放器案例8 MP3音乐播放器案例9 肥皂泡泡屏幕保护程序案例1O 图像随机显示屏幕保护程序案例11 滚动字幕屏幕保护程序案例12 带有背景音乐的随机字幕屏幕保护程序案例13 托盘动画图标程序本章小结第4章 Visual C#2006与数据库案例1 利用DataGridView控件显示数据库信息案例2 数据库数据记录单案例3 利用下拉列表框动态查询数据库信息案例4 利用ListView控件导航数据库信息案例5 带有数据库的会员登录系统案例6 动态添加数据库数据信息案例7 动态修改数据库数据信息案例8 动态删除数据库数据信息案例9 带有图像信息的数据库数据记录单案例10 分页显示数据库中的记录数据信息案例11 连接Excel 2008表格案例12 连接SQL Server数据库本章小结第5章 Visual C#2008的SQL查询与图表技朮案例1 多表连接条件查询案例2 分组条件查询案例3 排序查询案例4 嵌套查询案例5 视图在Select查询语句中的应用案例6 存储过程在Select查询语句中的应用案例7 动态获取数据库中所有视图和存储过程案例8 柱状图表分析图案例9 柱状图表的升序和降序案例10 折线图表分析图案例11 多折线图表分析图案例12 饼形图表分析图本章小结第6章 Visualc#2008的打印与水晶报表技术案例1 利用Windows组件打印数据库中的数据案例2 利用Windows组件打印数据库数据柱状图表案例3 利用Windows组件打印输出图像案例4 调用Word软件打印数据库中的数据案例5 调用Excel软件打印数据库中的数据案例6 利用水晶报表打印数据库中的数据案例7 利用水晶报表分组统计数据库中的数据案例8 利用水晶报表筛选数据库中的数据案例9 图表在水晶报表中的应用本章小结第7章 VisualC#2008与Windows系统设置案例1 任务栏的显示与隐藏案例2 开始按钮的显示与隐藏案例3 动态设置系统输入法案例4 动态设置桌面颜色案例5 动态设置鼠标的属性案例6 动态获取鼠标位置案例7 声卡的检测及声音,音频设备属性的设置案例8 只能运行一次的托盘程序案例9 动态设置程序是否为开机运行案例10 动态设置注册表是否可运行案例11 禁止修改IE浏览器的主页案例12 动态锁定计算机案例13 计算机的注销、关闭和重新启动案例14 动态获取计算机系统基本信息本章小结第8章 VisualC#2008与文件案例1 动态创建文件并输入文件内容案例2 动态打开和保存文件案例3 动态删除文件及清空回收站案例4 动态创建和删除文件夹及显示其是否存在案例5 动态获取文件夹中的文件案例6 动态搜索文件或文件夹案例7 动态显示磁盘容量图表案例8 动态移动文件案例9 动态复制文件案例1O 动态调用可执行EXE文件案例11 动态查看和修改文件属性案例12 动态比较文件本章小结第9章 VisualC#2008算法及控件的应用案例1 利用冒泡算法实现从小到大排序案例2 利用希尔算法实现从大到小排序案例3 判断主机IP合法性算法案例4 欧几里德最大公因子算法案例5 字符串的加密算法案例6 随机生成新身份证算法案例7 利用ListBox控件实现数据源字段的选择案例8 利用LislNiew控件实现图标的管理案例9 利用TreeView控件浏览图像案例10 利用ProgressBar控件实现进度控制案例11 利用Timel控件显示当前时间本章小结第10章 VisualC#2008与网络开发案例1 动态获取本机MAC地址案例2 动态获取本机IP地址案例3 动态网络Ping操作案例4 定时访问互联网案例5 定制网络浏览器程序案例6 动态发送电子邮件案例7 动态读取XMI文件本章小结第11章 VisualC#2008与Web应用程序案例1 利用AdRotator控件随机显示广告图像案例2 利用Calendar控件动态查询系统日期案例3 会员登录系统案例4 利用Application对象实现网站计数器案例5 利用Session对象实现留言板本章小结
    2016-09-02下载
    积分:1
  • mvc 数据验证 实例源码
    mvc 数据验证 实例源码
    2013-12-28下载
    积分:1
  • C# 仿window 记事本程序(入门级)
    C# 仿window 记事本程序(入门级)
    2020-06-17下载
    积分:1
  • 教学监控 socket 通讯
    【实例简介】
    2021-08-10 00:30:54下载
    积分:1
  • c# 网络编程 实例源码(pdf)
    我们知道 C#和 C++的差异之一,就是他本身没有类库,所使用的类库是.Net 框架中的类库--.Net FrameWork SDK。在.Net FrameWork SDK 中为网络编程提供了二个名称空间:"System.Net"和"System.Net.Sockets"。C#就是通过这二个名称空间中封装的类和方法实现网络通讯的。   首先我们解释一下在网络编程时候,经常遇到的几个概念:同步(synchronous)、异步(asynchronous)、阻塞(Block)和非阻塞(Unblock):   所谓同步方式,就是发送方发送数据包以后,丌等接受方响应,就接着发送下一个数据包。异步方式就是当发送方发送一个数据包以后,一直等到接受方响应后,才接着发送下一个数据包。而阻塞套接字是指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此 Readlin ( )方法将一直挂在调用上,直到读到一些数据,此函数调用才返回;而非阻塞套接字是指在执行此套接字的网络调用时,丌管是否执行成功,都立即返回。同样调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中数据,丌管是否读到数据都立即返回,而丌会一直挂在此函数调用上。在 Windows网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。平常所说的 C/S(客户端/服务器)结构的软件采用的方式就是异步非阻塞模式的。   其实在用 C#迚行网络编程中,我们并丌需要了解什么同步、异步、阻塞和非阻塞的原理和工作机制,因为在.Net FrameWrok SDK 中已经已经把这些机制给封装好了。下面我们就用 C#开一个具体的网络程序来说明一下问题。   一.本文中介绍的程序设计及运行环境   (1).微软视窗 2000 服务器版   (2)..Net Framework SDK Beta 2 以上版本   二.服务器端程序设计的关键步骤以及解决办法:   在下面接受的程序中,我们采用的是异步阻塞的方式。   (1).首先要要在给定的端口上面创建一个"tcpListener"对象侦听网络上面的请求。当接收到连结请求后通过调用"tcpListener"对象的"AcceptSocket"方法产生一个用于处理接入连接请求的 Socket 的实例。下面是具体实现代码: //创建一个 tcpListener 对象,此对象主要是对给定端口迚行侦听 tcpListener = new TcpListener ( 1234 ) ; //开始侦听 tcpListener.Start ( ) ; //返回可以用以处理连接的 Socket 实例 socketForClient = tcpListener.AcceptSocket ( ) ;   (2).接受和发送客户端数据:   此时 Socket 实例已经产生,如果网络上有请求,在请求通过以后,Socket 实例构造一个"NetworkStream"对象,"NetworkStream"对象为网络访问提供了基础数据流。我们通过名称空间"System.IO"中封装的二个类"StreamReader"和"StreamWriter"来实现对"NetworkStream"对象的访问。其中"StreamReader"类中的 ReadLine ( )方法就是从"NetworkStream"对象中读取一行字符;"StreamWriter"类中的 WriteLine ( )方法就是对"NetworkStream"对象中写入一行字符串。从而实现在网络上面传输字符串,下面是具体的实现代码: try { //如果返回值是"true",则产生的套节字已经接受来自进方的连接请求 if ( socketForClient.Connected ) { ListBox1.Items.Add ( "已经和客户端成功连接!" ) ; while ( true ) { //创建 networkStream 对象通过网络套节字来接受和发送数据 networkStream = new NetworkStream ( socketForClient ) ; //从当前数据流中读取一行字符,返回值是字符串 streamReader = new StreamReader ( networkStream ) ; string msg = streamReader.ReadLine ( ) ; ListBox1.Items.Add ( "收到客户端信息:" msg ) ; streamWriter = new StreamWriter ( networkStream ) ; if ( textBox1.Text != "" ) { ListBox1.Items.Add ( "往客户端反馈信息:" textBox1.Text ) ; //往当前的数据流中写入一行字符串 streamWriter.WriteLine ( textBox1.Text ) ; //刷新当前数据流中的数据 streamWriter.Flush ( ) ; } } } } catch ( Exception ey ) { MessageBox.Show ( ey.ToString ( ) ) ; }   (3).最后别忘了要关闭所以流,停止侦听网络,关闭套节字,具体如下: //关闭线程和流 networkStream.Close ( ) ; streamReader.Close ( ) ; streamWriter.Close ( ) ; _thread1.Abort ( ) ; tcpListener.Stop ( ) ; socketForClient.Shutdown ( SocketShutdown.Both ) ; socketForClient.Close ( ) ;   三.C#网络编程服务器端程序的部分源代码(server.cs):   由于在此次程序中我们采用的结构是异步阻塞方式,所以在实际的程序中,为了丌影响服务器端程序的运行速度,我们在程序中设计了一个线程,使得对网络请求侦听,接受和发送数据都在线程中处理,请在下面的代码中注意这一点,下面是 server.cs 的完整代码: using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; using System.Net.Sockets ; using System.IO ; using System.Threading ; using System.Net ; //导入程序中使用到的名字空间 public class Form1 : Form { private ListBox ListBox1 ; private Button button2 ; private Label label1 ; private TextBox textBox1 ; private Button button1 ; private Socket socketForClient ; private NetworkStream networkStream ; private TcpListener tcpListener ; private StreamWriter streamWriter ; private StreamReader streamReader ; private Thread _thread1 ; private System.ComponentModel.Container components = null ; public Form1 ( ) { InitializeComponent ( ) ; } //清除程序中使用的各种资源 protected override void Dispose ( bool disposing ) { if ( disposing ) { if ( components != null ) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } private void InitializeComponent ( ) { label1 = new Label ( ) ; button2 = new Button ( ) ; button1 = new Button ( ) ; ListBox1 = new ListBox ( ) ; textBox1 = new TextBox ( ) ; SuspendLayout ( ) ; label1.Location = new Point ( 8 , 168 ) ; label1.Name = "label1" ; label1.Size = new Size ( 120 , 23 ) ; label1.TabIndex = 3 ; label1.Text = "往客户端反馈信息:" ; //同样的方式设置其他控件,这里略去  this.Controls.Add ( button1 ) ; this.Controls.Add ( textBox1 ) ; this.Controls.Add ( label1 ) ; this.Controls.Add ( button2 ) ; this.Controls.Add ( ListBox1 ) ; this.MaximizeBox = false ; this.MinimizeBox = false ; this.Name = "Form1" ; this.Text = "C#的网络编程服务器端!" ; this.Closed = new System.EventHandler ( this.Form1_Closed ) ; this.ResumeLayout ( false ) ;  } private void Listen ( ) { //创建一个 tcpListener 对象,此对象主要是对给定端口迚行侦听 tcpListener = new TcpListener ( 1234 ) ; //开始侦听 tcpListener.Start ( ) ; //返回可以用以处理连接的 Socket 实例 socketForClient = tcpListener.AcceptSocket ( ) ; try { //如果返回值是"true",则产生的套节字已经接受来自进方的连接请求 if ( socketForClient.Connected ) { ListBox1.Items.Add ( "已经和客户端成功连接!" ) ; while ( true ) { //创建 networkStream 对象通过网络套节字来接受和发送数据 networkStream = new NetworkStream ( socketForClient ) ; //从当前数据流中读取一行字符,返回值是字符串 streamReader = new StreamReader ( networkStream ) ; string msg = streamReader.ReadLine ( ) ; ListBox1.Items.Add ( "收到客户端信息:" msg ) ; streamWriter = new StreamWriter ( networkStream ) ; if ( textBox1.Text != "" ) { ListBox1.Items.Add ( "往客户端反馈信息:" textBox1.Text ) ; //往当前的数据流中写入一行字符串 streamWriter.WriteLine ( textBox1.Text ) ; //刷新当前数据流中的数据 streamWriter.Flush ( ) ; } } } } catch ( Exception ey ) { MessageBox.Show ( ey.ToString ( ) ) ; } } static void Main ( ) { Application.Run ( new Form1 ( ) ) ; }  private void button1_Click ( object sender , System.EventArgs e ) { ListBox1.Items .Add ( "服务已经启动!" ) ; _thread1 = new Thread ( new ThreadStart ( Listen ) ) ; _thread1.Start ( ) ;  }  private void button2_Click ( object sender , System.EventArgs e ) { //关闭线程和流 networkStream.Close ( ) ; streamReader.Close ( ) ; streamWriter.Close ( ) ; _thread1.Abort ( ) ; tcpListener.Stop ( ) ; socketForClient.Shutdown ( SocketShutdown.Both ) ; socketForClient.Close ( ) ; } private void Form1_Closed ( object sender , System.EventArgs e ) { //关闭线程和流 networkStream.Close ( ) ; streamReader.Close ( ) ; streamWriter.Close ( ) ; _thread1.Abort ( ) ; tcpListener.Stop ( ) ; socketForClient.Shutdown ( SocketShutdown.Both ) ; socketForClient.Close ( ) ; } }   四.客户端程序设计的关键步骤以及解决办法:   (1).连接到服务器端的指定端口:   我们采用的本地机既做服务器也做客户机,你可以通过修改 IP 地址来确定自己想要连接的服务器。我们在连接的时候采用了"TcpClient"类,此类是在较高的抽象级别(高于Socket 类)上面提供 TCP 服务。下面代码就是连接到本地机(端口为 1234),并获取响应流: //连接到服务器端口,在这里是选用本地机器作为服务器,你可以通过修改 IP 地址来改变服务器 try { myclient = new TcpClient ( "localhost" , 1234 ) ; } catch { MessageBox.Show ( "没有连接到服务器!" ) ; return ; } //创建 networkStream 对象通过网络套节字来接受和发送数据 networkStream = myclient.GetStream ( ) ; streamReader = new StreamReader ( networkStream ) ; streamWriter = new StreamWriter ( networkStream ) ;   (2).实现接受和发送数据:   在接受和发送数据上面,我们依然采用了"NetworkStream"类,因为对他迚行操作比较简单,具体实现发送和接受还是通过命名空间"System.IO"中"StreamReader"类ReadLine ( )方法和"StreamWriter"类的 WriteLine ( )方法。具体的实现方法如下: if ( textBox1.Text == "" ) { MessageBox.Show ( "请确定文本框为非空!" ) ; textBox1.Focus ( ) ; return ; } try { string s ; //往当前的数据流中写入一行字符串 streamWriter.WriteLine ( textBox1.Text ) ; //刷新当前数据流中的数据 streamWriter.Flush ( ) ; //从当前数据流中读取一行字符,返回值是字符串 s = streamReader.ReadLine ( ) ; ListBox1.Items.Add ( "读取服务器端发送内容:" s ) ; } catch ( Exception ee ) { MessageBox.Show ( "从服务器端读取数据出现错误,类型为:" ee.ToString ( ) ) ; }    (3).最后一步和服务器端是一样的,就是要关闭程序中创建的流,具体如下: streamReader.Close ( ) ; streamWriter.Close ( ) ; networkStream.Close ( ) ;   五.客户端的部分代码:   由于在客户端丌需要侦听网络,所以在调用上面没有程序阻塞情冴,所以在下面的代码中,我们没有使用到线程,这是和服务器端程序的一个区别的地方。总结上面的这些关键步骤,可以得到一个用 C#网络编程 完整的客户端程序(client.cs),具体如下: using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; using System.Net.Sockets ; using System.IO ; using System.Threading ; //导入程序中使用到的名字空间 public class Form1 : Form { private ListBox ListBox1 ; private Label label1 ; private TextBox textBox1 ; private Button button3 ; private NetworkStream networkStream ; private StreamReader streamReader ; private StreamWriter streamWriter ; TcpClient myclient ; private Label label2 ;  private System.ComponentModel.Container components = null ;  public Form1 ( ) { InitializeComponent ( ) ; } //清除程序中使用的各种资源 protected override void Dispose ( bool disposing ) { if ( disposing ) { if ( components != null ) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } private void InitializeComponent ( ) { label1 = new Label ( ) ; button3 = new Button ( ) ; ListBox1 = new ListBox ( ) ; textBox1 = new TextBox ( ) ; label2 = new Label ( ) ; SuspendLayout ( ) ; label1.Location = new Point ( 8 , 168 ) ; label1.Name = "label1" ; label1.Size = new Size ( 56 , 23 ) ; label1.TabIndex = 3 ; label1.Text = "信息:" ; //同样方法设置其他控件 AutoScaleBaseSize = new Size ( 6 , 14 ) ; ClientSize = new Size ( 424 , 205 ) ; this.Controls.Add ( button3 ) ; this.Controls.Add ( textBox1 ) ; this.Controls.Add ( label1 ) ; this.Controls.Add ( label2 ) ; this.Controls.Add ( ListBox1 ) ; this.MaximizeBox = false ; this.MinimizeBox = false ; this.Name = "Form1" ; this.Text = "C#的网络编程客户器端!" ; this.Closed = new System.EventHandler ( this.Form1_Closed ) ; this.ResumeLayout ( false ) ; //连接到服务器端口,在这里是选用本地机器作为服务器,你可以通过修改 IP 地址来改变服务器 try { myclient = new TcpClient ( "localhost" , 1234 ) ; } catch { MessageBox.Show ( "没有连接到服务器!" ) ; return ; } //创建 networkStream 对象通过网络套节字来接受和发送数据 networkStream = myclient.GetStream ( ) ; streamReader = new StreamReader ( networkStream ) ; streamWriter = new StreamWriter ( networkStream ) ; } static void Main ( ) { Application.Run ( new Form1 ( ) ) ; }  private void button3_Click ( object sender , System.EventArgs e ) {  if ( textBox1.Text == "" ) { MessageBox.Show ( "请确定文本框为非空!" ) ; textBox1.Focus ( ) ; return ; } try { string s ; //往当前的数据流中写入一行字符串 streamWriter.WriteLine ( textBox1.Text ) ; //刷新当前数据流中的数据 streamWriter.Flush ( ) ; //从当前数据流中读取一行字符,返回值是字符串 s = streamReader.ReadLine ( ) ; ListBox1.Items.Add ( "读取服务器端发送内容:" s ) ; } catch ( Exception ee ) { MessageBox.Show ( "从服务器端读取数据出现错误,类型为:" ee.ToString ( ) ) ; } }  private void Form1_Closed ( object sender , System.EventArgs e ) { streamReader.Close ( ) ; streamWriter.Close ( ) ; networkStream.Close ( ) ;  } }   下图是编译上面二个程序后运行的界面:   图 01:C#编写网络程序运行界面    七.总结:   虽然在.Net FrameWrok SDK 中只为网络编程提供了二个命名空间,但这二个命名空间中的内容却是十分丰富的,C#利用这二个命名空间既可以实现同步和异步,也可以实现阻塞和非阻塞。本文通过用 C#编写一个网络上信息传输的程序,展现了其丰富的内容,由于篇幅所限,更深,更强大的功能还需要读者去实践、探索。 
    2014-07-07下载
    积分:1
  • winform 订单管理系统源码下载(三层结构)
    winform 订单管理系统源码下载(三层结构)
    2016-11-18下载
    积分:1
  • NeatUpload大文件上传例子,有进度条
    NeatUpload大文件上传例子,有进度条
    2015-06-18下载
    积分:1
  • C# 二维码 例子源码
    二维码
    2015-05-05下载
    积分:1
  • 多线程控制
    多线程控制
    2015-06-16下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载