نمایش نتایج 1 تا 20 از 20

نام تاپیک: ساخت user control برای login به فرم اصلی برنامه

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    نقل قول نوشته شده توسط az_farzaneh مشاهده تاپیک
    چه جوری میشه فقط از یک event استفاده کرد به گونه ای که فهمید user موفق شده ,cancel کرده یا با fail مواجه شده , در واقع یک event تمام این حالتها را در بر بگیره ؟
    یک enum تعریف کنید واسه تمامی حالات موجود از رخدادهای مورد نظر. برای مثال در اینجا داریم :
    public enum LoginEventTypes {     Successed,     Failed,     Cancel }
    و از طرفی شما مجبور به استفاده از کلاس EventArgs نیستید و میتونید از یک کلاس مشتق شده (از EventArgs) استفاده کنید و اطلاعات مورد نظرتون رو (در اینجا همون نتیجه ی لاگین شخص)در اون نگهداری کنید.
    public class LoginEventArgs : EventArgs {     private LoginEventTypes eventType;     public LoginEventTypes EventType     {         get { return eventType; }         set { eventType = value; }     }    private string loginDate;     public string LoginDate     {         get { return loginDate; }         set { loginDate = value; }     }    public LoginEventArgs(LoginEventTypes _eventType)     {         this.loginDate = DateTime.Now.ToString();         this.eventType = _eventType;     } }
    البته در مثال بالا من زمان سعی کاربر به لاگین رو هم نگهداری کردم (شاید واسه Log کردن لازم بشه)

    حالا به کلاس یوزرکنترل میریم و ایونتهای اضافی رو پاک میکنیم و فقط یک ایونت رو نگه میداریم. توجه داشته باشید که امضای دیلیگیت (قسمت قرمز رنگ) نیز عوض شده:
    public delegate void ClickButtonHandler(object sender, LoginEventArgs e);
    public event ClickButtonHandler LoginEvent;

    public void OnLoginEvent(LoginEventTypes _eventType)
    {
    if (LoginEvent != null)
    LoginEvent(this, new LoginEventArgs(_eventType));
    }
    و برای فراخوانی هم کافیه همین یک متود رو با پارامترهای مختلف صدا بزنیم :
    private void btnLogin_Click(object sender, EventArgs e)
    {
    bool result = false;
    Control parent = this.Parent;
    if (!(parent is IAuthentication))
    return;
    result = (parent as IAuthentication).IsAuthentic(tbUserId.Text, tbPassword.Text);
    if (result)
    OnLoginEvent(LoginEventTypes.Successed);
    else
    OnLoginEvent(LoginEventTypes.Failed);
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
    OnLoginEvent(LoginEventTypes.Cancel);
    }
    و در پایان کد فرم لاگین رو نیز به این شکل تغییر بدید :
    public partial class LoginForm : Form, IAuthentication
    {
    public LoginForm()
    {
    InitializeComponent();
    }

    public bool IsAuthentic(string UserId, string Password)
    {
    if (UserId == "user" && Password == "pass")
    return true;
    return false;
    }

    private int nTry = 0;
    private void loginControl1_LoginEvent(object sender, LoginEventArgs e)
    {
    switch (e.EventType)
    {
    case LoginEventTypes.Successed:
    this.DialogResult = DialogResult.OK;
    break;
    case LoginEventTypes.Failed:
    if (nTry++ > 2)
    {
    MessageBox.Show("ByeBye!");
    this.DialogResult = DialogResult.Abort;
    }
    else
    MessageBox.Show(string.Format("{0}: You have {1} times to try again...", e.LoginDate, (3 - nTry + 1).ToString()));
    break;
    case LoginEventTypes.Cancel:
    this.DialogResult = DialogResult.Ignore;
    break;
    default:
    break;
    }
    }
    }
    کد نهایی این مثال نیز آپلود شد.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 14:14 عصر
    ...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست

تاپیک های مشابه

  1. مقاله جامع: User Control ها و Custom Control ها در ASP.NET
    نوشته شده توسط Behrouz_Rad در بخش مقالات مرتبط با Microsoft .Net Framework
    پاسخ: 12
    آخرین پست: سه شنبه 24 اردیبهشت 1392, 10:35 صبح
  2. login control
    نوشته شده توسط matrix_h85 در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 17 شهریور 1386, 14:49 عصر
  3. فرق بین login و user
    نوشته شده توسط arash_m در بخش SQL Server
    پاسخ: 2
    آخرین پست: سه شنبه 23 خرداد 1385, 13:27 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •