首先確定一個事情,登陸界面不是進程的主頁面。也就是說,主進程首先加載的不是登陸頁面。
1:首頁建立個主頁面MainForm。再建立個登陸頁面LoginFrom。各自頁面name屬性設置為與類相同的名字。
2: 在主頁面的初始化中加入如下代碼:

1 public MainForm() 2 { 3 InitializeComponent(); 4 LoginFrom lf = new LoginFrom(); 5 lf.ShowDialog(); 6 this.gbLogin.Text = "歡迎" + lf.userName; 7 }
3:設計登陸頁面:
1: 首頁 窗體屬性 ControlBox 設置為false。StartPosition 設置為CenterScreen。
2: 拽托控件設置頁面。有登陸名,密碼,登陸按鈕即可。其中密碼控件的屬性passwordchar 設置為*。
3:添加登陸按鈕點擊事件。代碼如下:

1 private void btnLogin_Click(object sender, EventArgs e) 2 { 3 if (string.IsNullOrEmpty(tbUserName.Text.Trim()) || string.IsNullOrEmpty(tbPassword.Text.Trim())) 4 { 5 MessageBox.Show("賬戶密碼不能為空!"); 6 } 7 else 8 { 9 BLL.UserBLL userbll = new BLL.UserBLL(); 10 if (userbll.UserLogin(tbUserName.Text.Trim(), tbPassword.Text.Trim())) 11 { 12 userName = tbUserName.Text.Trim(); 13 this.Close(); 14 } 15 else 16 { 17 MessageBox.Show("登陸失敗!賬戶密碼錯誤!"); 18 } 19 } 20 }
其中BLL為業務邏輯層。主要操作數據庫鏈接。
4:登陸成功后,要在主頁面顯示登陸的用戶名。這就牽扯到了跨窗體數據傳輸。這里使用最簡單的,在登陸窗體定義
public string userName;然后主船體訪問。
5: BLL代碼如下:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace BLL 8 { 9 public class UserBLL 10 { 11 private EFSql.SqlDbContext _context; 12 public UserBLL() 13 { 14 if (_context == null) 15 { 16 _context = new EFSql.SqlDbContext(); 17 } 18 } 19 20 public bool UserLogin(string name, string password) 21 { 22 Model.UserInfo user = _context.UserInfos.Where(p => p.userName == name && p.userPassword == password).FirstOrDefault(); 23 if (user != null) 24 { 25 user.lastLoginTime = DateTime.Now; 26 _context.SaveChanges(); 27 return true; 28 } 29 else 30 { 31 return false; 32 } 33 } 34 35 public bool AddUser(string name, string password) 36 { 37 Model.UserInfo user = new Model.UserInfo(); 38 user.userCode = Guid.NewGuid().ToString().Replace("-",""); 39 user.userName = name; 40 user.userPassword = password; 41 _context.UserInfos.Add(user); 42 _context.SaveChanges(); 43 return true; 44 } 45 46 public List<Model.UserInfo> GetUserList(string pwd) 47 { 48 return _context.UserInfos.AsNoTracking().ToList(); 49 } 50 } 51 }