通用的登錄界面

 

 

這是最近設計的新的的登錄界面。

分三塊來布局。

置頂的部分是顯示系統的信息,當然是顯示系統的名稱和英文名稱,這個都寫在app.config文件的.可以直接修改配置文件來改變該登錄界面顯示的文本。

 

左側是登錄要輸入的用戶和密碼已經按鈕。

右側是公司logo

 

界面元素使用DOTNETBAR32第三方控件.目前官方最新版本是9.4.0.0

可以在網上找破解的低版本的。

 

項目結構

 

 

看裡面的設計

 

 

 

代碼實現:

public partial class FrmLogin : Office2007Form

    {

        private ILogin login = null;

 

        public FrmLogin(ILogin login)

        {

            this.login = login;

            InitializeComponent();

        }

 

        private void btnLogin_Click(object sender, EventArgs e)

        {

            //錄入數據的有效性

            if (!superValidator1.Validate())

            {

                txtUsername.Focus();

                lblErrorMessage.Text = superValidator1.GetValidator1(txtUsername).ErrorMessage;

                return;

            }

 

            string username = this.txtUsername.Text;

            string password = this.txtPassword.Text;

 

            //驗證用戶名和密碼有效性

            if (login.ValidateUser(username, password))

            {

                this.DialogResult = DialogResult.OK;

            }

            else

            {

                txtUsername.Focus();

                //提示錯誤信息

                this.lblErrorMessage.Text = Settings.Default.LoginError;

            }

        }

    }

 

首先構造函數接受一個接口.是為了考慮到以後的擴展。

可能不同的系統會有的不同的驗證登錄的方式。

所以給個接口,滿足不同的實現。

 

該接口非常簡單:

 

    /// <summary>

    /// 提供一个接口,用戶登錄時驗證用戶名和密碼。

    /// </summary>

    public interface ILogin

    {

        /// <summary>

        /// 验证提供的用户名和密码是有效的。

        /// </summary>

        /// <param name="username">要验证的用户的名称。</param>

        /// <param name="password">指定的用户的密码。</param>

        /// <returns>如果提供的用户名和密码有效,则返回 true;否则返回 false</returns>

        bool ValidateUser(string username, string password);

    }

這裡只寫了登錄按鈕的事件。取消按鈕是默認DialogResult.Cancel

考慮到在主界面運行時候會以ShowDialog的方式來打開登錄界面。

所以這裡沒有用Close()

 

整個邏輯都比較簡單。

在測試的項目里,主界面的代碼。

private void Form1_Load(object sender, EventArgs e)

        {

            DialogResult dr = new FrmLogin(new TestLogin()).ShowDialog();

 

            if (dr == DialogResult.Cancel)

            {

                this.Close();

            }

            else

            {

                this.Show();

            }

        }

 

這裡傳進了一個TestLogin

測試用途,輸入任何的用戶名密碼都能登錄。

實際項目中就是在這裡實現根據自己的業務,去驗證用戶名和密碼。

class TestLogin:ILogin

    {

 

        #region ILogin 成员

 

        public bool ValidateUser(string username, string password)

        {

            return true;

        }

 

        #endregion

    }

 

 

/Files/a7373773/Login.rar

 

posted @ 2011-06-08 20:21  陈陈#  阅读(1200)  评论(2编辑  收藏  举报