www.pudn.com > 20040623netCip.rar > MainForm.cs, change:2004-05-06,size:27260b


using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Xml.Serialization; 
using System.Xml; 
 
namespace SwitchNetConfig 
{ 
	/// <summary> 
	/// Main Form displayed at startup 
	/// </summary> 
	public class MainForm : System.Windows.Forms.Form 
	{ 
		#region Designer 
 
		private System.Windows.Forms.Label lblProfile; 
		private System.Windows.Forms.ComboBox cboProfiles; 
		private System.Windows.Forms.Button btnNewProfile; 
		private System.Windows.Forms.ComboBox cboNIC; 
		private System.Windows.Forms.Label label1; 
		private System.Windows.Forms.Label lblIP; 
		private System.Windows.Forms.Label lblSubnet; 
		private System.Windows.Forms.Label lblGateway; 
		private System.Windows.Forms.Label lblDNS; 
		private System.Windows.Forms.TextBox txtIP; 
		private System.Windows.Forms.Button btnActivate; 
		private System.Windows.Forms.Button btnClose; 
		private System.Windows.Forms.TextBox txtDNS; 
		private System.Windows.Forms.TextBox txtGateway; 
		private System.Windows.Forms.TextBox txtSubnet; 
		private System.Windows.Forms.GroupBox grpNIC; 
		private System.Windows.Forms.GroupBox grpIEProxy; 
		private System.Windows.Forms.CheckBox chkUseProxy; 
		private System.Windows.Forms.Label lblProxy; 
		private System.Windows.Forms.CheckBox chkByPassForLocal; 
		private System.Windows.Forms.GroupBox grpProxy; 
		private System.Windows.Forms.TextBox txtProxy; 
		private System.Windows.Forms.GroupBox grpCurrent; 
		private System.Windows.Forms.Label label2; 
		private System.Windows.Forms.Label label3; 
		private System.Windows.Forms.Label label4; 
		private System.Windows.Forms.Label label5; 
		private System.Windows.Forms.Label lblCurrentDNS; 
		private System.Windows.Forms.Label lblCurrentGateway; 
		private System.Windows.Forms.Label lblCurrentSubnet; 
		private System.Windows.Forms.Label lblCurrentIP; 
		private System.Windows.Forms.Label label6; 
		private System.Windows.Forms.Label lblCurrentProxy; 
		private System.Windows.Forms.CheckBox chkDHCP; 
		/// <summary> 
		/// Required designer variable. 
		/// </summary> 
		private System.ComponentModel.Container components = null; 
 
		public MainForm() 
		{ 
			// 
			// Required for Windows Form Designer support 
			// 
			InitializeComponent(); 
 
			// 
			// TODO: Add any constructor code after InitializeComponent call 
			// 
		} 
 
		/// <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.cboProfiles = new System.Windows.Forms.ComboBox(); 
			this.lblProfile = new System.Windows.Forms.Label(); 
			this.btnNewProfile = new System.Windows.Forms.Button(); 
			this.grpNIC = new System.Windows.Forms.GroupBox(); 
			this.txtDNS = new System.Windows.Forms.TextBox(); 
			this.txtGateway = new System.Windows.Forms.TextBox(); 
			this.txtSubnet = new System.Windows.Forms.TextBox(); 
			this.txtIP = new System.Windows.Forms.TextBox(); 
			this.lblDNS = new System.Windows.Forms.Label(); 
			this.lblGateway = new System.Windows.Forms.Label(); 
			this.lblSubnet = new System.Windows.Forms.Label(); 
			this.lblIP = new System.Windows.Forms.Label(); 
			this.label1 = new System.Windows.Forms.Label(); 
			this.cboNIC = new System.Windows.Forms.ComboBox(); 
			this.btnActivate = new System.Windows.Forms.Button(); 
			this.btnClose = new System.Windows.Forms.Button(); 
			this.grpIEProxy = new System.Windows.Forms.GroupBox(); 
			this.grpProxy = new System.Windows.Forms.GroupBox(); 
			this.chkByPassForLocal = new System.Windows.Forms.CheckBox(); 
			this.txtProxy = new System.Windows.Forms.TextBox(); 
			this.lblProxy = new System.Windows.Forms.Label(); 
			this.chkUseProxy = new System.Windows.Forms.CheckBox(); 
			this.grpCurrent = new System.Windows.Forms.GroupBox(); 
			this.label2 = new System.Windows.Forms.Label(); 
			this.label3 = new System.Windows.Forms.Label(); 
			this.label4 = new System.Windows.Forms.Label(); 
			this.label5 = new System.Windows.Forms.Label(); 
			this.lblCurrentDNS = new System.Windows.Forms.Label(); 
			this.lblCurrentGateway = new System.Windows.Forms.Label(); 
			this.lblCurrentSubnet = new System.Windows.Forms.Label(); 
			this.lblCurrentIP = new System.Windows.Forms.Label(); 
			this.label6 = new System.Windows.Forms.Label(); 
			this.lblCurrentProxy = new System.Windows.Forms.Label(); 
			this.chkDHCP = new System.Windows.Forms.CheckBox(); 
			this.grpNIC.SuspendLayout(); 
			this.grpIEProxy.SuspendLayout(); 
			this.grpProxy.SuspendLayout(); 
			this.grpCurrent.SuspendLayout(); 
			this.SuspendLayout(); 
			//  
			// cboProfiles 
			//  
			this.cboProfiles.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
			this.cboProfiles.Location = new System.Drawing.Point(64, 8); 
			this.cboProfiles.Name = "cboProfiles"; 
			this.cboProfiles.Size = new System.Drawing.Size(368, 21); 
			this.cboProfiles.TabIndex = 2; 
			this.cboProfiles.SelectedIndexChanged += new System.EventHandler(this.cboProfiles_SelectedIndexChanged); 
			//  
			// lblProfile 
			//  
			this.lblProfile.AutoSize = true; 
			this.lblProfile.Location = new System.Drawing.Point(8, 8); 
			this.lblProfile.Name = "lblProfile"; 
			this.lblProfile.Size = new System.Drawing.Size(39, 17); 
			this.lblProfile.TabIndex = 1; 
			this.lblProfile.Text = "&Profile:"; 
			//  
			// btnNewProfile 
			//  
			this.btnNewProfile.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
			this.btnNewProfile.Location = new System.Drawing.Point(440, 8); 
			this.btnNewProfile.Name = "btnNewProfile"; 
			this.btnNewProfile.Size = new System.Drawing.Size(64, 23); 
			this.btnNewProfile.TabIndex = 3; 
			this.btnNewProfile.Text = "&New..."; 
			this.btnNewProfile.Click += new System.EventHandler(this.btnNewProfile_Click); 
			//  
			// grpNIC 
			//  
			this.grpNIC.Controls.Add(this.chkDHCP); 
			this.grpNIC.Controls.Add(this.txtDNS); 
			this.grpNIC.Controls.Add(this.txtGateway); 
			this.grpNIC.Controls.Add(this.txtSubnet); 
			this.grpNIC.Controls.Add(this.txtIP); 
			this.grpNIC.Controls.Add(this.lblDNS); 
			this.grpNIC.Controls.Add(this.lblGateway); 
			this.grpNIC.Controls.Add(this.lblSubnet); 
			this.grpNIC.Controls.Add(this.lblIP); 
			this.grpNIC.Controls.Add(this.label1); 
			this.grpNIC.Controls.Add(this.cboNIC); 
			this.grpNIC.Enabled = false; 
			this.grpNIC.Location = new System.Drawing.Point(8, 32); 
			this.grpNIC.Name = "grpNIC"; 
			this.grpNIC.Size = new System.Drawing.Size(496, 168); 
			this.grpNIC.TabIndex = 3; 
			this.grpNIC.TabStop = false; 
			this.grpNIC.Text = "IP Configuration"; 
			//  
			// txtDNS 
			//  
			this.txtDNS.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtDNS.Location = new System.Drawing.Point(64, 136); 
			this.txtDNS.Name = "txtDNS"; 
			this.txtDNS.Size = new System.Drawing.Size(424, 21); 
			this.txtDNS.TabIndex = 13; 
			this.txtDNS.Text = ""; 
			this.txtDNS.Leave += new System.EventHandler(this.txtDNS_Leave); 
			//  
			// txtGateway 
			//  
			this.txtGateway.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtGateway.Location = new System.Drawing.Point(64, 112); 
			this.txtGateway.Name = "txtGateway"; 
			this.txtGateway.Size = new System.Drawing.Size(424, 21); 
			this.txtGateway.TabIndex = 11; 
			this.txtGateway.Text = ""; 
			this.txtGateway.Leave += new System.EventHandler(this.txtGateway_Leave); 
			//  
			// txtSubnet 
			//  
			this.txtSubnet.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtSubnet.Location = new System.Drawing.Point(64, 88); 
			this.txtSubnet.Name = "txtSubnet"; 
			this.txtSubnet.Size = new System.Drawing.Size(424, 21); 
			this.txtSubnet.TabIndex = 9; 
			this.txtSubnet.Text = ""; 
			this.txtSubnet.Leave += new System.EventHandler(this.txtSubnet_Leave); 
			//  
			// txtIP 
			//  
			this.txtIP.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtIP.Location = new System.Drawing.Point(64, 64); 
			this.txtIP.Name = "txtIP"; 
			this.txtIP.Size = new System.Drawing.Size(424, 21); 
			this.txtIP.TabIndex = 7; 
			this.txtIP.Text = ""; 
			this.txtIP.Leave += new System.EventHandler(this.txtIP_Leave); 
			//  
			// lblDNS 
			//  
			this.lblDNS.AutoSize = true; 
			this.lblDNS.Location = new System.Drawing.Point(8, 136); 
			this.lblDNS.Name = "lblDNS"; 
			this.lblDNS.Size = new System.Drawing.Size(30, 17); 
			this.lblDNS.TabIndex = 12; 
			this.lblDNS.Text = "&DNS:"; 
			//  
			// lblGateway 
			//  
			this.lblGateway.AutoSize = true; 
			this.lblGateway.Location = new System.Drawing.Point(8, 112); 
			this.lblGateway.Name = "lblGateway"; 
			this.lblGateway.Size = new System.Drawing.Size(51, 17); 
			this.lblGateway.TabIndex = 10; 
			this.lblGateway.Text = "&Gateway:"; 
			//  
			// lblSubnet 
			//  
			this.lblSubnet.AutoSize = true; 
			this.lblSubnet.Location = new System.Drawing.Point(8, 88); 
			this.lblSubnet.Name = "lblSubnet"; 
			this.lblSubnet.Size = new System.Drawing.Size(43, 17); 
			this.lblSubnet.TabIndex = 8; 
			this.lblSubnet.Text = "&Subnet:"; 
			//  
			// lblIP 
			//  
			this.lblIP.AutoSize = true; 
			this.lblIP.Location = new System.Drawing.Point(8, 64); 
			this.lblIP.Name = "lblIP"; 
			this.lblIP.Size = new System.Drawing.Size(19, 17); 
			this.lblIP.TabIndex = 6; 
			this.lblIP.Text = "&IP:"; 
			//  
			// label1 
			//  
			this.label1.AutoSize = true; 
			this.label1.Location = new System.Drawing.Point(8, 16); 
			this.label1.Name = "label1"; 
			this.label1.Size = new System.Drawing.Size(76, 17); 
			this.label1.TabIndex = 4; 
			this.label1.Text = "Network &Card:"; 
			//  
			// cboNIC 
			//  
			this.cboNIC.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
			this.cboNIC.Location = new System.Drawing.Point(96, 16); 
			this.cboNIC.Name = "cboNIC"; 
			this.cboNIC.Size = new System.Drawing.Size(392, 21); 
			this.cboNIC.TabIndex = 5; 
			this.cboNIC.SelectedIndexChanged += new System.EventHandler(this.cboNIC_SelectedIndexChanged); 
			//  
			// btnActivate 
			//  
			this.btnActivate.Enabled = false; 
			this.btnActivate.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
			this.btnActivate.Location = new System.Drawing.Point(264, 472); 
			this.btnActivate.Name = "btnActivate"; 
			this.btnActivate.Size = new System.Drawing.Size(152, 23); 
			this.btnActivate.TabIndex = 18; 
			this.btnActivate.Text = "&Activate Profile..."; 
			this.btnActivate.Click += new System.EventHandler(this.btnActivate_Click); 
			//  
			// btnClose 
			//  
			this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; 
			this.btnClose.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
			this.btnClose.Location = new System.Drawing.Point(424, 472); 
			this.btnClose.Name = "btnClose"; 
			this.btnClose.Size = new System.Drawing.Size(80, 23); 
			this.btnClose.TabIndex = 19; 
			this.btnClose.Text = "&Close"; 
			this.btnClose.Click += new System.EventHandler(this.btnClose_Click); 
			//  
			// grpIEProxy 
			//  
			this.grpIEProxy.Controls.Add(this.grpProxy); 
			this.grpIEProxy.Controls.Add(this.chkUseProxy); 
			this.grpIEProxy.Enabled = false; 
			this.grpIEProxy.Location = new System.Drawing.Point(8, 200); 
			this.grpIEProxy.Name = "grpIEProxy"; 
			this.grpIEProxy.Size = new System.Drawing.Size(496, 136); 
			this.grpIEProxy.TabIndex = 6; 
			this.grpIEProxy.TabStop = false; 
			this.grpIEProxy.Text = "Internet Explorer Proxy"; 
			//  
			// grpProxy 
			//  
			this.grpProxy.Controls.Add(this.chkByPassForLocal); 
			this.grpProxy.Controls.Add(this.txtProxy); 
			this.grpProxy.Controls.Add(this.lblProxy); 
			this.grpProxy.Location = new System.Drawing.Point(8, 48); 
			this.grpProxy.Name = "grpProxy"; 
			this.grpProxy.Size = new System.Drawing.Size(480, 80); 
			this.grpProxy.TabIndex = 12; 
			this.grpProxy.TabStop = false; 
			this.grpProxy.Text = "Proxy"; 
			//  
			// chkByPassForLocal 
			//  
			this.chkByPassForLocal.Location = new System.Drawing.Point(64, 48); 
			this.chkByPassForLocal.Name = "chkByPassForLocal"; 
			this.chkByPassForLocal.Size = new System.Drawing.Size(152, 16); 
			this.chkByPassForLocal.TabIndex = 17; 
			this.chkByPassForLocal.Text = "&Bypass for local address"; 
			this.chkByPassForLocal.CheckedChanged += new System.EventHandler(this.chkByPassForLocal_CheckedChanged); 
			//  
			// txtProxy 
			//  
			this.txtProxy.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
			this.txtProxy.Location = new System.Drawing.Point(64, 24); 
			this.txtProxy.Name = "txtProxy"; 
			this.txtProxy.Size = new System.Drawing.Size(408, 21); 
			this.txtProxy.TabIndex = 16; 
			this.txtProxy.Text = ""; 
			this.txtProxy.Leave += new System.EventHandler(this.txtProxy_Leave); 
			//  
			// lblProxy 
			//  
			this.lblProxy.AutoSize = true; 
			this.lblProxy.Location = new System.Drawing.Point(8, 24); 
			this.lblProxy.Name = "lblProxy"; 
			this.lblProxy.Size = new System.Drawing.Size(36, 17); 
			this.lblProxy.TabIndex = 15; 
			this.lblProxy.Text = "Pro&xy:"; 
			//  
			// chkUseProxy 
			//  
			this.chkUseProxy.Location = new System.Drawing.Point(8, 24); 
			this.chkUseProxy.Name = "chkUseProxy"; 
			this.chkUseProxy.Size = new System.Drawing.Size(80, 16); 
			this.chkUseProxy.TabIndex = 14; 
			this.chkUseProxy.Text = "&Use Proxy"; 
			this.chkUseProxy.CheckedChanged += new System.EventHandler(this.chkUseProxy_CheckedChanged); 
			//  
			// grpCurrent 
			//  
			this.grpCurrent.Controls.Add(this.label2); 
			this.grpCurrent.Controls.Add(this.label3); 
			this.grpCurrent.Controls.Add(this.label4); 
			this.grpCurrent.Controls.Add(this.label5); 
			this.grpCurrent.Controls.Add(this.lblCurrentDNS); 
			this.grpCurrent.Controls.Add(this.lblCurrentGateway); 
			this.grpCurrent.Controls.Add(this.lblCurrentSubnet); 
			this.grpCurrent.Controls.Add(this.lblCurrentIP); 
			this.grpCurrent.Controls.Add(this.label6); 
			this.grpCurrent.Controls.Add(this.lblCurrentProxy); 
			this.grpCurrent.Location = new System.Drawing.Point(8, 336); 
			this.grpCurrent.Name = "grpCurrent"; 
			this.grpCurrent.Size = new System.Drawing.Size(496, 128); 
			this.grpCurrent.TabIndex = 7; 
			this.grpCurrent.TabStop = false; 
			this.grpCurrent.Text = "Current Configuration"; 
			//  
			// label2 
			//  
			this.label2.AutoSize = true; 
			this.label2.Location = new System.Drawing.Point(8, 96); 
			this.label2.Name = "label2"; 
			this.label2.Size = new System.Drawing.Size(30, 17); 
			this.label2.TabIndex = 10; 
			this.label2.Text = "DNS:"; 
			//  
			// label3 
			//  
			this.label3.AutoSize = true; 
			this.label3.Location = new System.Drawing.Point(8, 72); 
			this.label3.Name = "label3"; 
			this.label3.Size = new System.Drawing.Size(51, 17); 
			this.label3.TabIndex = 9; 
			this.label3.Text = "Gateway:"; 
			//  
			// label4 
			//  
			this.label4.AutoSize = true; 
			this.label4.Location = new System.Drawing.Point(8, 48); 
			this.label4.Name = "label4"; 
			this.label4.Size = new System.Drawing.Size(43, 17); 
			this.label4.TabIndex = 8; 
			this.label4.Text = "Subnet:"; 
			//  
			// label5 
			//  
			this.label5.AutoSize = true; 
			this.label5.Location = new System.Drawing.Point(8, 24); 
			this.label5.Name = "label5"; 
			this.label5.Size = new System.Drawing.Size(19, 17); 
			this.label5.TabIndex = 7; 
			this.label5.Text = "IP:"; 
			//  
			// lblCurrentDNS 
			//  
			this.lblCurrentDNS.AutoSize = true; 
			this.lblCurrentDNS.Location = new System.Drawing.Point(64, 96); 
			this.lblCurrentDNS.Name = "lblCurrentDNS"; 
			this.lblCurrentDNS.Size = new System.Drawing.Size(0, 17); 
			this.lblCurrentDNS.TabIndex = 10; 
			//  
			// lblCurrentGateway 
			//  
			this.lblCurrentGateway.AutoSize = true; 
			this.lblCurrentGateway.Location = new System.Drawing.Point(64, 72); 
			this.lblCurrentGateway.Name = "lblCurrentGateway"; 
			this.lblCurrentGateway.Size = new System.Drawing.Size(0, 17); 
			this.lblCurrentGateway.TabIndex = 9; 
			//  
			// lblCurrentSubnet 
			//  
			this.lblCurrentSubnet.AutoSize = true; 
			this.lblCurrentSubnet.Location = new System.Drawing.Point(64, 48); 
			this.lblCurrentSubnet.Name = "lblCurrentSubnet"; 
			this.lblCurrentSubnet.Size = new System.Drawing.Size(0, 17); 
			this.lblCurrentSubnet.TabIndex = 8; 
			//  
			// lblCurrentIP 
			//  
			this.lblCurrentIP.AutoSize = true; 
			this.lblCurrentIP.Location = new System.Drawing.Point(64, 24); 
			this.lblCurrentIP.Name = "lblCurrentIP"; 
			this.lblCurrentIP.Size = new System.Drawing.Size(0, 17); 
			this.lblCurrentIP.TabIndex = 7; 
			//  
			// label6 
			//  
			this.label6.AutoSize = true; 
			this.label6.Location = new System.Drawing.Point(256, 24); 
			this.label6.Name = "label6"; 
			this.label6.Size = new System.Drawing.Size(36, 17); 
			this.label6.TabIndex = 7; 
			this.label6.Text = "Proxy:"; 
			//  
			// lblCurrentProxy 
			//  
			this.lblCurrentProxy.AutoSize = true; 
			this.lblCurrentProxy.Location = new System.Drawing.Point(256, 48); 
			this.lblCurrentProxy.Name = "lblCurrentProxy"; 
			this.lblCurrentProxy.Size = new System.Drawing.Size(0, 17); 
			this.lblCurrentProxy.TabIndex = 7; 
			//  
			// chkDHCP 
			//  
			this.chkDHCP.Location = new System.Drawing.Point(8, 40); 
			this.chkDHCP.Name = "chkDHCP"; 
			this.chkDHCP.Size = new System.Drawing.Size(160, 16); 
			this.chkDHCP.TabIndex = 6; 
			this.chkDHCP.Text = "Obtain IP from &DHCP"; 
			this.chkDHCP.CheckedChanged += new System.EventHandler(this.chkDHCP_CheckedChanged); 
			//  
			// MainForm 
			//  
			this.AcceptButton = this.btnActivate; 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 14); 
			this.CancelButton = this.btnClose; 
			this.ClientSize = new System.Drawing.Size(512, 501); 
			this.Controls.Add(this.grpCurrent); 
			this.Controls.Add(this.grpIEProxy); 
			this.Controls.Add(this.btnClose); 
			this.Controls.Add(this.btnActivate); 
			this.Controls.Add(this.grpNIC); 
			this.Controls.Add(this.btnNewProfile); 
			this.Controls.Add(this.lblProfile); 
			this.Controls.Add(this.cboProfiles); 
			this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 
			this.Name = "MainForm"; 
			this.Text = "SwitchNetConfig ver 1.0"; 
			this.Closing += new System.ComponentModel.CancelEventHandler(this.MainForm_Closing); 
			this.Load += new System.EventHandler(this.MainForm_Load); 
			this.grpNIC.ResumeLayout(false); 
			this.grpIEProxy.ResumeLayout(false); 
			this.grpProxy.ResumeLayout(false); 
			this.grpCurrent.ResumeLayout(false); 
			this.ResumeLayout(false); 
 
		} 
		#endregion 
 
		#endregion 
 
		#region Private Variables and properties 
 
		// stores all the profiles 
		private ArrayList _Profiles = new ArrayList(); 
 
		/// <summary> 
		/// Returns the currently selected profile object 
		/// </summary> 
		private Profile _CurrentProfile 
		{ 
			get 
			{ 
				// find the profile for the currently selected profile 
				foreach( Profile profile in _Profiles ) 
					if( profile.Name.Equals( _ProfileName ) ) 
						return profile; 
 
				return null; 
			} 
		} 
 
		/// <summary> 
		/// Returns the NICProfile object for the currently selected NIC Name 
		/// </summary> 
		private NICProfile _CurrentNICProfile 
		{ 
			get 
			{ 
				// find the NIC Profile for the currently selected NIC name 
				foreach( NICProfile profile in _CurrentProfile.NICProfiles ) 
					if( profile.Name.Equals( _NICName ) ) 
						return profile; 
				 
				// not found, create a new NIC Profile 
				NICProfile newProfile = new NICProfile( cboNIC.Text ); 
				_CurrentProfile.NICProfiles.Add( newProfile ); 
 
				return newProfile; 
			} 
		} 
 
		/// <summary> 
		/// Returns the current NICName 
		/// </summary> 
		private string _NICName 
		{ 
			get 
			{ 
				return cboNIC.SelectedItem as string; 
			} 
		} 
 
		/// <summary> 
		/// returns the current profile name 
		/// </summary> 
		private string _ProfileName  
		{ 
			get 
			{ 
				return cboProfiles.SelectedItem as string; 
			} 
		} 
 
		#endregion 
 
		#region Private Methods 
 
		/// <summary> 
		/// Load profile from configuration file 
		/// </summary> 
		private void loadProfiles() 
		{ 
			_Profiles = ConfigurationHelper.LoadConfig(); 
		 
			// populate the profile drop down list 
			cboProfiles.Items.Clear(); 
			foreach( Profile profile in _Profiles ) 
			{ 
				cboProfiles.Items.Add( profile.Name ); 
			} 
		} 
 
		/// <summary> 
		/// Load a particular profile 
		/// </summary> 
		/// <param name="profile"></param> 
		private void loadProfile( Profile profile ) 
		{ 
			// load the NIC list 
			loadNICs(); 
 
			// load proxy setting 
			loadIEProxy();			 
 
			btnActivate.Enabled = true; 
		} 
 
		/// <summary> 
		/// Load NIC names 
		/// </summary> 
		private void loadNICs() 
		{ 
			// get the NIC names 
			ArrayList nicNames = WMIHelper.GetNICNames(); 
 
			// populate the NIC list 
			cboNIC.Items.Clear(); 
			foreach( string name in nicNames ) 
				cboNIC.Items.Add( name ); 
 
			// if NIC found, select the first one 
			if( cboNIC.Items.Count > 0 ) 
			{ 
				cboNIC.SelectedIndex = 0; 
				grpNIC.Enabled = true; 
			} 
		} 
 
 
		/// <summary> 
		/// Show the IP, DNS, Gateway and Subnet mask for the NIC name 
		/// </summary> 
		/// <param name="nicName"></param> 
		private void loadNICProfile( string nicName ) 
		{ 
			NICProfile nicProfile = _CurrentNICProfile; 
			if( null == nicProfile ) return; 
 
			txtIP.Text = nicProfile.IP; 
			txtSubnet.Text = nicProfile.Subnet; 
			txtGateway.Text = nicProfile.Gateway; 
			txtDNS.Text = nicProfile.DNS;			 
			chkDHCP.Checked = nicProfile.UseDHCP; 
		} 
 
		/// <summary> 
		/// Loads IE Proxy settings 
		/// </summary> 
		private void loadIEProxy( ) 
		{ 
			IEProfile profile = _CurrentProfile.IEProfile; 
 
			chkUseProxy.Checked = profile.UseProxy; 
			chkByPassForLocal.Checked = profile.BypassLocal; 
			//txtLocal.Text = profile.BypassAddresses; 
			txtProxy.Text = profile.ProxyName; 
 
			grpIEProxy.Enabled = true; 
		} 
 
		private void saveProfiles() 
		{ 
			ConfigurationHelper.SaveConfig( _Profiles ); 
		} 
 
		private void createNewProfile() 
		{ 
			using( NewProfileDialog newProfileDialog = new NewProfileDialog() ) 
			{ 
 
				if( DialogResult.OK == newProfileDialog.ShowDialog( this ) ) 
				{ 
					// create a new profile object 
					Profile newProfile = new Profile( newProfileDialog.NewProfileName ); 
					_Profiles.Add( newProfile ); 
 
					// show it in the drop down as selected 
					cboProfiles.SelectedIndex = cboProfiles.Items.Add( newProfile.Name ); 
 
					// load the NIC list 
					loadNICs(); 
				} 
			} 
		} 
 
		/// <summary> 
		/// Loads current network configuration for the specified NIC and show in  
		/// the current configuration block 
		/// </summary> 
		/// <param name="nicName"></param> 
		private void loadCurrentSetting( string nicName ) 
		{ 
			 
			string [] ipAddresses; 
			string [] subnets; 
			string [] gateways; 
			string [] dnses; 
 
			// Load current IP configuration for the selected NIC 
			WMIHelper.GetIP( nicName, out ipAddresses, out subnets, out gateways, out dnses ); 
 
			// if network connection is disabled, no information will be available 
			if( null == ipAddresses || null == subnets || null == gateways || null == dnses ) 
				return; 
 
			// Show the setting 
			lblCurrentIP.Text = string.Join( ",", ipAddresses ); 
			lblCurrentSubnet.Text = string.Join( ",", subnets ); 
			lblCurrentGateway.Text = string.Join( ",", gateways ); 
			lblCurrentDNS.Text = string.Join( ",", dnses ); 
		} 
 
		/// <summary> 
		/// Displayes current proxy setting for Internet Explorer 
		/// </summary> 
		private void loadCurrentProxySetting() 
		{ 
			if( IEProxy.ProxyEnabled ) 
				lblCurrentProxy.Text = IEProxy.ProxyServer; 
			else 
				lblCurrentProxy.Text = "No Proxy"; 
 
			if( IEProxy.BypassProxyForLocal ) 
				lblCurrentProxy.Text += ". Bypass local"; 
			else 
				lblCurrentProxy.Text += ". Do not bypass local"; 
		} 
 
		/// <summary> 
		/// Apply currently selected profile 
		/// </summary> 
		private void applyProfile() 
		{ 
			ApplySettingDialog applyDialog = new ApplySettingDialog();			 
			applyDialog.Show(); 
			applyDialog.Refresh(); 
 
			// Start applying setting 
			applyDialog.ApplySetting( _CurrentProfile ); 
 
			// show current configuration after applying 
			loadCurrentSetting( _NICName ); 
			loadCurrentProxySetting();		 
		} 
 
		private void close() 
		{ 
			this.Close(); 
		} 
 
		private void loadApp() 
		{ 
			loadProfiles(); 
			loadCurrentProxySetting(); 
		} 
 
		#endregion 
 
		#region Events 
 
		private void chkUseProxy_CheckedChanged(object sender, System.EventArgs e) 
		{ 
			_CurrentProfile.IEProfile.UseProxy = grpProxy.Enabled = chkUseProxy.Checked;			  
		} 
		 
		private void cboProfiles_SelectedIndexChanged(object sender, System.EventArgs e) 
		{ 
			loadProfile( _CurrentProfile ); 
		} 
 
		private void txtIP_Leave(object sender, System.EventArgs e) 
		{ 
			_CurrentNICProfile.IP = txtIP.Text; 
		} 
 
		private void txtSubnet_Leave(object sender, System.EventArgs e) 
		{ 
			_CurrentNICProfile.Subnet = txtSubnet.Text; 
		} 
 
		private void txtGateway_Leave(object sender, System.EventArgs e) 
		{ 
			_CurrentNICProfile.Gateway = txtGateway.Text; 
		} 
 
		private void txtDNS_Leave(object sender, System.EventArgs e) 
		{ 
			_CurrentNICProfile.DNS = txtDNS.Text; 
		} 
 
		private void txtProxy_Leave(object sender, System.EventArgs e) 
		{ 
			_CurrentProfile.IEProfile.ProxyName = txtProxy.Text; 
		} 
		 
		private void chkByPassForLocal_CheckedChanged(object sender, System.EventArgs e) 
		{ 
			_CurrentProfile.IEProfile.BypassLocal = chkByPassForLocal.Checked; 
		} 
		 
		private void txtLocal_Leave(object sender, System.EventArgs e) 
		{ 
			//_CurrentProfile.IEProfile.BypassAddresses = txtLocal.Text; 
		} 
 
		private void btnNewProfile_Click(object sender, System.EventArgs e) 
		{ 
			createNewProfile(); 
		} 
 
		private void cboNIC_SelectedIndexChanged(object sender, System.EventArgs e) 
		{ 
			loadNICProfile( _NICName ); 
			loadCurrentSetting( _NICName );			 
		} 
 
		private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
		{ 
			saveProfiles(); 
		} 
		 
		private void btnClose_Click(object sender, System.EventArgs e) 
		{ 
			close(); 
		} 
		 
		private void btnActivate_Click(object sender, System.EventArgs e) 
		{ 
			applyProfile(); 
		} 
 
		private void MainForm_Load(object sender, System.EventArgs e) 
		{ 
			loadApp(); 
		} 
 
		private void chkDHCP_CheckedChanged(object sender, System.EventArgs e) 
		{ 
			bool allowIP = !chkDHCP.Checked; 
			txtIP.Enabled = txtSubnet.Enabled = txtGateway.Enabled = txtDNS.Enabled = allowIP; 
			_CurrentNICProfile.UseDHCP = chkDHCP.Checked; 
		} 
 
		#endregion				 
	} 
}