• 1405/05/29

تمرین جلسه 115 ساخت فرم لاگین :

سلام استاد وقتتون بخیر خسته نباشید

بنده تمرین ساخت صفحه لاگین رو به این شکل ساختم که در‌ 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  استفاده کردم . 

در مرحله اول که از این متود استفاده کردم برای تست کردنش بود چون که اسم متود به معنای برابر بود .اومدم داخل کد امتحانش کردم که ببینم چه نتیجه ای میده که کاملا جواب داد . ممنون میشم که اگه راه حل بهتری داشت  اطلاع بدید. و اینکه میشد این فرم رو به جای اینکه از دو فرم جداگانه استفاده کنیم یکیش میکردیم ولی چون ممکنه قابلیت های دیگه اضافه بشه به فرم لاگین این کارو نکردم.

میخواستم قابلیت های مختلفی رو به این فرم اضافه کنم متاسفانه به خاطر یه مقداری مشغله فرصت نکردم. انشالاه در پروژه ای که قراره بهتون تحویل بدم تا جایی که ممکنه قابلیت های متنوعی داخلش قرار خواهم داد 

با تشکر از تدرس فوق العاده شما

  • 1405/05/29
  • ساعت 09:16

عالی بود دوست من


  • 1405/05/29
  • ساعت 09:28

سپاس از توجه شما 

استاد مدائنی یه سوالی داشتم خدمتتون اینکه پروژه ای که قراره براتون بفرستیم الان استارتش رو بزنیم یا زمانی که این پروژه رو ریفکتور و ریپوزیتوری رو اضافه کردید؟

چون من برای اینکه میخواستم ریپوزیتوری رو به پروژم اضافه کنم ، تحقیق کردم چون چندین کلاس قراره داشته باشم باید از جنریک اینترفیس ها استفاده  کنم

ممنون میشم راهنمایی کنید 🌹


  • 1405/05/29
  • ساعت 11:12

هر طور مایل هستید 

تا انتهای دوره مهلت دارید تصمیم بگیرید 


  • 1405/05/29
  • ساعت 11:24

مچکرم از لطف شما استاد مدائنی 🌹