سلام استاد وقتتون بخیر خسته نباشید
بنده تمرین ساخت صفحه لاگین رو به این شکل ساختم که در Program cs تنظیم کردم که اولین فرم فرم لاگین باشه.
بعد از اینکه کاربر لاگین کرد وارد صفحه اصلی برنامه میشه که میتونه اونجا با زدن دکمه افزودن ادمین ، ادمین های جدیدی رو اضافه کنه
namespace DataLayer.Models
{
public class Admins
{
[Key]
public int Id { get; set; }
[MaxLength(60)]
public required string UserName { get; set; }
[MaxLength(60)]
public required string Password { get; set; }
public required DateTime RegisterDate { get; set; }
}
}در قسمت بعد بنده یه فولدر در بخش فرم ها ایجاد کردم به اسم Login داخل این فولدر فرم های Login و Sign In رو قرار دادم
در بخش فرم اصلی برنامه یه دکمه برای افزودن ادمین قرار دادم و دیتا هایی که از دیتا بیس قراره توی فرم اصلی واکشی بشه رو درحال بارگذاری گذاشتم که بعد از یک ثانیه که فرم کامپوننت هاش لود شد دیتا واکشی بشه که لود شدن فرم با تاخیر مواجه نشه

private void btnAddAdmin_Click(object sender, EventArgs e)
{
frmSignIn signIn = new frmSignIn();
signIn.ShowDialog();
}در قسمت بعد فرم افزودن ادمین یا همون فرم Sign In هست

public partial class frmSignIn : Form
{
public frmSignIn()
{
InitializeComponent();
}
private void frmSignIn_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
if (ValidateInpute()==true)
{
using (Toplearn_Db_Context _Context = new Toplearn_Db_Context())
{
Admins admins = new Admins()
{
UserName = txtUserName.Text,
Password = txtPassword.Text,
RegisterDate = DateTime.Now
};
_Context.Add(admins);
_Context.SaveChanges();
}
this.Close();
}
}
private void btnCancele_Click(object sender, EventArgs e)
{
this.Close();
}
#region Validate Inputs
bool ValidateInpute()
{
bool isValid = true;
if (string.IsNullOrEmpty(txtUserName.Text))
{
isValid = false;
lblValidateUserName.Visible = true;
}
else
{
isValid = true;
lblValidateUserName.Visible = false;
}
if (string.IsNullOrEmpty(txtPassword.Text))
{
isValid = false;
lblValidateUserName.Visible = true;
}
else
{
isValid = true;
lblValidateUserName.Visible = false;
}
return isValid;
}
#endregion
}
}در قسمت بعد هم کد های فرم لاگین هست . فرم ها یکی هستند از لحاظ ظاهری.
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
private void frmLogin_Load(object sender, EventArgs e)
{
}
private void btnCancele_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnSave_Click(object sender, EventArgs e)
{
if (ValidateInpute() == true)
{
string username = txtUserName.Text;
string password = txtPassword.Text;
using (Toplearn_Db_Context _Context = new Toplearn_Db_Context())
{
bool isExsist = _Context.admins.Any(a => a.UserName.Equals(username) && a.Password.Equals(password));
if (isExsist == true)
{
frmMain main = new frmMain();
main.ShowDialog();
this.Close();
}
else
{
PersianMsBox.Show("نام کاربری و یا رمز عبور اشتباه میباشد.", "هشدار",PersianMsbox_button.Ok, PersianMsBox_Icons.Error);
}
}
}
}
#region Validate Inputs
bool ValidateInpute()
{
bool isValid = true;
if (string.IsNullOrEmpty(txtUserName.Text))
{
isValid = false;
lblValidateUserName.Visible = true;
}
else
{
isValid = true;
lblValidateUserName.Visible = false;
}
if (string.IsNullOrEmpty(txtPassword.Text))
{
isValid = false;
lblValidateUserName.Visible = true;
}
else
{
isValid = true;
lblValidateUserName.Visible = false;
}
return isValid;
}
#endregion
}
}
در بخش کد های لاگین بنده از یه متودی به اسم Equals استفاده کردم .
در مرحله اول که از این متود استفاده کردم برای تست کردنش بود چون که اسم متود به معنای برابر بود .اومدم داخل کد امتحانش کردم که ببینم چه نتیجه ای میده که کاملا جواب داد . ممنون میشم که اگه راه حل بهتری داشت اطلاع بدید. و اینکه میشد این فرم رو به جای اینکه از دو فرم جداگانه استفاده کنیم یکیش میکردیم ولی چون ممکنه قابلیت های دیگه اضافه بشه به فرم لاگین این کارو نکردم.
میخواستم قابلیت های مختلفی رو به این فرم اضافه کنم متاسفانه به خاطر یه مقداری مشغله فرصت نکردم. انشالاه در پروژه ای که قراره بهتون تحویل بدم تا جایی که ممکنه قابلیت های متنوعی داخلش قرار خواهم داد
با تشکر از تدرس فوق العاده شما
عالی بود دوست من
سپاس از توجه شما
استاد مدائنی یه سوالی داشتم خدمتتون اینکه پروژه ای که قراره براتون بفرستیم الان استارتش رو بزنیم یا زمانی که این پروژه رو ریفکتور و ریپوزیتوری رو اضافه کردید؟
چون من برای اینکه میخواستم ریپوزیتوری رو به پروژم اضافه کنم ، تحقیق کردم چون چندین کلاس قراره داشته باشم باید از جنریک اینترفیس ها استفاده کنم
ممنون میشم راهنمایی کنید 🌹
هر طور مایل هستید
تا انتهای دوره مهلت دارید تصمیم بگیرید
مچکرم از لطف شما استاد مدائنی 🌹