c#-Winform实时显示上传下载速率

代码如下:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Echevil;

namespace Network_Monitor_Sample
{
	/// <summary>
	/// Summary description for Form1.
	/// </summary>
	public class FormMain : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Label LabelDownload;
		private System.Windows.Forms.Label LabelUpload;
		private System.Windows.Forms.Label LableDownloadValue;
		private System.Windows.Forms.Label LabelUploadValue;
		private System.Windows.Forms.ListBox ListAdapters;
		private System.Windows.Forms.Timer TimerCounter;
		private System.ComponentModel.IContainer components;

		public FormMain()
		{		
			InitializeComponent();
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
            this.components = new System.ComponentModel.Container();
            this.ListAdapters = new System.Windows.Forms.ListBox();
            this.LabelDownload = new System.Windows.Forms.Label();
            this.LabelUpload = new System.Windows.Forms.Label();
            this.LableDownloadValue = new System.Windows.Forms.Label();
            this.LabelUploadValue = new System.Windows.Forms.Label();
            this.TimerCounter = new System.Windows.Forms.Timer(this.components);
            this.SuspendLayout();
            // 
            // ListAdapters
            // 
            this.ListAdapters.ItemHeight = 12;
            this.ListAdapters.Location = new System.Drawing.Point(19, 26);
            this.ListAdapters.Name = "ListAdapters";
            this.ListAdapters.Size = new System.Drawing.Size(250, 76);
            this.ListAdapters.TabIndex = 0;
            this.ListAdapters.SelectedIndexChanged += new System.EventHandler(this.ListAdapters_SelectedIndexChanged);
            // 
            // LabelDownload
            // 
            this.LabelDownload.Location = new System.Drawing.Point(272, 26);
            this.LabelDownload.Name = "LabelDownload";
            this.LabelDownload.Size = new System.Drawing.Size(120, 25);
            this.LabelDownload.TabIndex = 1;
            this.LabelDownload.Text = "Download Speed:";
            this.LabelDownload.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            // 
            // LabelUpload
            // 
            this.LabelUpload.Location = new System.Drawing.Point(272, 77);
            this.LabelUpload.Name = "LabelUpload";
            this.LabelUpload.Size = new System.Drawing.Size(120, 25);
            this.LabelUpload.TabIndex = 2;
            this.LabelUpload.Text = "Upload Speed:";
            this.LabelUpload.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            // 
            // LableDownloadValue
            // 
            this.LableDownloadValue.Location = new System.Drawing.Point(388, 26);
            this.LableDownloadValue.Name = "LableDownloadValue";
            this.LableDownloadValue.Size = new System.Drawing.Size(120, 25);
            this.LableDownloadValue.TabIndex = 3;
            this.LableDownloadValue.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // LabelUploadValue
            // 
            this.LabelUploadValue.Location = new System.Drawing.Point(388, 78);
            this.LabelUploadValue.Name = "LabelUploadValue";
            this.LabelUploadValue.Size = new System.Drawing.Size(120, 25);
            this.LabelUploadValue.TabIndex = 4;
            this.LabelUploadValue.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // TimerCounter
            // 
            this.TimerCounter.Interval = 1000;
            this.TimerCounter.Tick += new System.EventHandler(this.TimerCounter_Tick);
            // 
            // FormMain
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
            this.ClientSize = new System.Drawing.Size(520, 134);
            this.Controls.Add(this.LabelUploadValue);
            this.Controls.Add(this.LableDownloadValue);
            this.Controls.Add(this.LabelUpload);
            this.Controls.Add(this.LabelDownload);
            this.Controls.Add(this.ListAdapters);
            this.Name = "FormMain";
            this.Text = "实时显示上传下载速率";
            this.Load += new System.EventHandler(this.FormMain_Load);
            this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.EnableVisualStyles();
			Application.Run(new FormMain());
		}

		private NetworkAdapter[] adapters;
		private NetworkMonitor monitor;

		private void FormMain_Load(object sender, System.EventArgs e)
		{
			monitor	=	new NetworkMonitor();
			this.adapters	=	monitor.Adapters;

			if(adapters.Length == 0)
			{
				this.ListAdapters.Enabled	=	false;
				MessageBox.Show("No network adapters found on this computer.");
				return;
			}

			this.ListAdapters.Items.AddRange(this.adapters);
		}

		private void ListAdapters_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			monitor.StopMonitoring();
			monitor.StartMonitoring(adapters[this.ListAdapters.SelectedIndex]);
			this.TimerCounter.Start();
		}

		private void TimerCounter_Tick(object sender, System.EventArgs e)
		{
			NetworkAdapter adapter	=	this.adapters[this.ListAdapters.SelectedIndex];
			this.LableDownloadValue.Text	=	String.Format("{0:n} kbps",adapter.DownloadSpeedKbps);
			this.LabelUploadValue.Text		=	String.Format("{0:n} kbps",adapter.UploadSpeedKbps);
		}

	}
}

如图:

c#-Winform实时显示上传下载速率

c#-Winform实时显示上传下载速率

上一篇:C#DataGridView单元格Header背景颜色各种设置详解


下一篇:Simple Path Data Resources that I Add to Every WPF and Silverlight Project