這是最近設計的新的的登錄界面。
分三塊來布局。
置頂的部分是顯示系統的信息,當然是顯示系統的名稱和英文名稱,這個都寫在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
}