好久以前作的东西,最近拿出来溜溜,最近一直没有作应用程序方面的东西了,有点生疏! 希望我的这篇东西能对您有所帮助,大家共同探讨共同进步,此文章比较简单!是作一个通用的登陆框控件!
首先建一解决项目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(); }[page]
/// /// 清理所有正在使用的资源。 /// 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 [page] 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程序员有所帮助如果有什么不足的地方,希望您能指正,谢谢