登陸框控制項

來源:互聯網
上載者:User
控制項 好久以前作的東西,最近拿出來溜溜,最近一直沒有作應用程式方面的東西了,有點生疏! 希望我的這篇東西能對您有所協助,大家共同探討共同進步,此文章比較簡單!是作一個通用的登陸框控制項!

首先建一解決項目LoginControl,添加一個類庫的項目LoginControl,然後添加使用者控制項ctlLogin



然後在ctlLogin.cs檔案中寫代碼

//ctlLogin.cs

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

namespace LoginControl
{
///
/// ctlLogin 的摘要說明。
///
public class ctlLogin : System.Windows.Forms.UserControl
{
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label lHeader;
private System.Windows.Forms.Label lText;
private System.Windows.Forms.Button btnLogin;
private System.Windows.Forms.Label lPassword;
private System.Windows.Forms.Label lUsername;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.TextBox txtUsername;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.ErrorProvider errorProvider;
///
/// 必需的設計器變數。
///
private System.ComponentModel.Container components = null;

public event System.EventHandler Successful;
public event System.EventHandler Failed;

private ArrayList strUsername=new ArrayList();
private ArrayList strPassword=new ArrayList();
private int index=-1;

private string ErrMsg = "請輸入正確的使用者名稱和密碼!";

public ctlLogin()
{
// 該調用是 Windows.Forms 表單設計器所必需的。
InitializeComponent();

// TODO: 在 InitializeComponent 調用後添加任何初始化
strUsername.Clear();
strPassword.Clear();
}

///
/// 清理所有正在使用的資源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region 組件設計器產生的程式碼
///
/// 設計器支援所需的方法 - 不要使用代碼編輯器
/// 修改此方法的內容。
///
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(ctlLogin));
this.panel1 = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.lText = new System.Windows.Forms.Label();
this.lHeader = new System.Windows.Forms.Label();
this.btnLogin = new System.Windows.Forms.Button();
this.lPassword = new System.Windows.Forms.Label();
this.lUsername = new System.Windows.Forms.Label();
this.txtPassword = new System.Windows.Forms.TextBox();
this.txtUsername = new System.Windows.Forms.TextBox();
this.errorProvider = new System.Windows.Forms.ErrorProvider();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.lText);
this.panel1.Controls.Add(this.lHeader);
this.panel1.Location = new System.Drawing.Point(4, 4);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(480, 52);
this.panel1.TabIndex = 0;
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(432, 12);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(40, 32);
this.pictureBox1.TabIndex = 6;
this.pictureBox1.TabStop = false;
//
// lText
//
this.lText.Location = new System.Drawing.Point(36, 24);
this.lText.Name = "lText";
this.lText.Size = new System.Drawing.Size(360, 20);
this.lText.TabIndex = 5;
this.lText.Text = "請輸入您的使用者名稱和密碼.";
this.lText.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lHeader
//
this.lHeader.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lHeader.Location = new System.Drawing.Point(12, 4);
this.lHeader.Name = "lHeader";
this.lHeader.Size = new System.Drawing.Size(384, 20);
this.lHeader.TabIndex = 4;
this.lHeader.Text = "登陸";
this.lHeader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// btnLogin
//
this.btnLogin.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
this.btnLogin.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.btnLogin.Location = new System.Drawing.Point(376, 292);
this.btnLogin.Name = "btnLogin";
this.btnLogin.Size = new System.Drawing.Size(70, 20);
this.btnLogin.TabIndex = 14;
this.btnLogin.Text = "登 陸";
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
//
// lPassword
//
this.lPassword.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lPassword.Location = new System.Drawing.Point(76, 252);
this.lPassword.Name = "lPassword";
this.lPassword.Size = new System.Drawing.Size(80, 20);
this.lPassword.TabIndex = 16;
this.lPassword.Text = "密 碼";
this.lPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// lUsername
//
this.lUsername.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lUsername.Location = new System.Drawing.Point(76, 212);
this.lUsername.Name = "lUsername";
this.lUsername.Size = new System.Drawing.Size(80, 20);
this.lUsername.TabIndex = 15;
this.lUsername.Text = "使用者名稱";
this.lUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtPassword
//
this.txtPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtPassword.Location = new System.Drawing.Point(176, 252);
this.txtPassword.Name = "txtPassword";
this.txtPassword.PasswordChar = '*';
this.txtPassword.Size = new System.Drawing.Size(270, 21);
this.txtPassword.TabIndex = 13;
this.txtPassword.Text = "";
this.txtPassword.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtPassword_KeyPress);
this.txtPassword.Leave += new System.EventHandler(this.Control_Leave);
this.txtPassword.Enter += new System.EventHandler(this.Control_Enter);
//
// txtUsername
//
this.txtUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtUsername.Location = new System.Drawing.Point(176, 212);
this.txtUsername.Name = "txtUsername";
this.txtUsername.Size = new System.Drawing.Size(270, 21);
this.txtUsername.TabIndex = 12;
this.txtUsername.Text = "";
this.txtUsername.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtUsername_KeyPress);
this.txtUsername.Leave += new System.EventHandler(this.Control_Leave);
this.txtUsername.Enter += new System.EventHandler(this.Control_Enter);
//
// errorProvider
//
this.errorProvider.ContainerControl = this;
//
// ctlLogin
//
this.Controls.Add(this.btnLogin);
this.Controls.Add(this.lPassword);
this.Controls.Add(this.lUsername);
this.Controls.Add(this.txtPassword);
this.Controls.Add(this.txtUsername);
this.Controls.Add(this.panel1);
this.Name = "ctlLogin";
this.Size = new System.Drawing.Size(484, 348);
this.Load += new System.EventHandler(this.ctlLogin_Load);
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);

}
#endregion

private void ctlLogin_Load(object sender, System.EventArgs e)
{
// strUsername.Add(txtUsername.Text.Trim());
// strPassword.Add(txtPassword.Text.Trim());
}

private void txtPassword_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar==(char)13)
{
btnLogin_Click(sender,new EventArgs());
}
}

private void btnLogin_Click(object sender, System.EventArgs e)
{
bool b = CheckPassword(Username, Password);
if (b)
{
Successful(this, new System.EventArgs());
}
else
{
Failed(this, new System.EventArgs());
}
}

///
/// 判斷使用者名稱和密碼是否正確
///
/// 所有使用者
/// 所有使用者密碼
///
private bool CheckPassword(ArrayList alUser,ArrayList alPWD)
{
string strUser="";
string strPWD="";
if(alUser.Count>0 && alPWD.Count>0)
{
for(int i=0;i {
strUser=alUser[i].ToString();
strPWD=alPWD[i].ToString().Trim();
if(strUser.Trim()==txtUsername.Text.Trim() && strPWD.Trim()==txtPassword.Text.Trim())
{
Index_Username=i;
errorProvider.Dispose();
return true;
}
if(i == alUser.Count-1)
{
errorProvider.SetError(btnLogin, ErrMsg);
return false;
}
}
}
return false;
}

private void Control_Enter(object sender, System.EventArgs e)
{
Control ctl=(Control)sender;
ctl.BackColor=Color.LemonChiffon;
}

private void Control_Leave(object sender, System.EventArgs e)
{
Control ctl=(Control)sender;
ctl.BackColor=Color.White;
}

private void txtUsername_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar==(char)13)
{
txtPassword.Focus();
}
}


///
/// 所有使用者
///
public ArrayList Username
{
get
{
return strUsername;
}
set
{
strUsername = value;
}

}


///
/// 所有使用者密碼
///
public ArrayList Password
{
get
{
return strPassword;
}
set
{
strPassword = value;
}
}

///
/// 在使用者數組Username中的索引
///
public int Index_Username
{
get
{
return index;
}
set
{
index=value;
}
}

///
/// 錯誤資訊
///
public string ErrorMessage
{
get
{
return ErrMsg;
}
set
{
ErrMsg = value;
}
}
}
}




接著,您就可以編譯成LoginControl.dll

再在解決項目中添加一個測試專案Test,然後在工具箱中添加/移除項中添加剛才編譯的LoginControl.dll,添加一測試介面為frmTest,然後在工具箱中把ctlLogin控制項拖到frmTest頁面中

然後在frmTest.cs中來測試剛才的控制項

//frmTest.cs

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using InformationClass; //自己寫的一個測試類別

namespace Test
{
///
/// Form1 的摘要說明。
///
public class frmTest : System.Windows.Forms.Form
{
private LoginControl.ctlLogin ctlLogin;
///
/// 必需的設計器變數。
///
private System.ComponentModel.Container components = null;

private Users objUsers=new Users(); //執行個體化自訂的登陸使用者集合類
private User m_objUser=new User(); //執行個體化自訂的登陸使用者類

public frmTest()
{
//
// Windows 表單設計器支援所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 調用後添加任何建構函式代碼
//
}

///
/// 清理所有正在使用的資源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 表單設計器產生的程式碼
///
/// 設計器支援所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
///
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frmTest));
this.ctlLogin = new LoginControl.ctlLogin();
this.SuspendLayout();
//
// ctlLogin
//
this.ctlLogin.ErrorMessage = "請輸入正確的使用者名稱和密碼!";
this.ctlLogin.Index_Username = -1;
this.ctlLogin.Location = new System.Drawing.Point(0, 0);
this.ctlLogin.Name = "ctlLogin";
this.ctlLogin.Size = new System.Drawing.Size(484, 348);
this.ctlLogin.TabIndex = 0;
this.ctlLogin.Failed += new System.EventHandler(this.ctlLogin_Failed);
this.ctlLogin.Load += new System.EventHandler(this.Form1_Load);
this.ctlLogin.Successful += new System.EventHandler(this.ctlLogin_Successful);
//
// frmTest
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(484, 345);
this.Controls.Add(this.ctlLogin);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmTest";
this.Text = "系統登陸";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion

///
/// 應用程式的主進入點。
///
[STAThread]
static void Main()
{
Application.Run(new frmTest());
}

private void ctlLogin_Failed(object sender, System.EventArgs e)
{
MessageBox.Show("登陸失敗!請輸入正確的使用者名稱和密碼!!","資訊提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}

private void ctlLogin_Successful(object sender, System.EventArgs e)
{
m_objUser=objUsers[ctlLogin.Index_Username];
MessageBox.Show("登陸成功!","資訊提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

private void Form1_Load(object sender, System.EventArgs e)
{
objUsers=new ReadData().GetUsers();
if(objUsers.Count>0)
{
foreach(User objUser in objUsers)
{
ctlLogin.Username.Add(objUser.Name);
ctlLogin.Password.Add(objUser.Password);
}
}
}
}
}



運行程式

如果登陸失敗就會出現





如果登陸成功





就這樣,小小的一個登陸控制項就作好了,希望我的這篇文章能對於剛學沒有多久的.NET程式員有所協助
如果有什麼不足的地方,希望您能指正,謝謝





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。