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

نام تاپیک: مشکل در لاگین

  1. #1

    مشکل در لاگین

    با سلام

    تو برنامم ابتدا صفحه اصلی باز میشه و در رویداد لود صفحه اصلی فرم لاگین به صورت show dialog باز میشه فقط مشکل اینجاست زمان اجرای برنامه اگر برم تو تسک منیجر فرم لاگین رو ببندم وارد برنامه میشه (عجب لاگین جالبی!) دوستان کسی می دونه چ کار کنم ک این مشکل پیش نیاد ؟

    با تشکر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل در لاگین

    نقل قول نوشته شده توسط rahmani67 مشاهده تاپیک
    با سلام

    تو برنامم ابتدا صفحه اصلی باز میشه و در رویداد لود صفحه اصلی فرم لاگین به صورت show dialog باز میشه فقط مشکل اینجاست زمان اجرای برنامه اگر برم تو تسک منیجر فرم لاگین رو ببندم وارد برنامه میشه (عجب لاگین جالبی!) دوستان کسی می دونه چ کار کنم ک این مشکل پیش نیاد ؟

    با تشکر
    سلام.
    اگر غیر از این باشه باید تعجب کرد. جتی اگه کادر دور فرم رو هم برداری بازم با Escap کاربر فرم جاری رو می بنده و به برنامه ورود میکنه. فرم لاگین رو به عنوان فرم پیش فرض (اولین فرمی که اجرا میشه) قرار بدید. اگر کاربر درست یوزر و پسورد رو وارد کرد، فرم لاگین رو مخفی (Hide ) و فرم بعد از لاگین(همون چیزی که در حال حاضر قرار دادید) رو showdialog کنید. فقط در رویداد formclosing این فرم حتما باید ()Application.Exit رو بنویسید. تا موقع خروج اون فرم مخفی شده (Hide ) هم که فرم مادر هست بسته بشه.
    موفق باشید.

  3. #3

    نقل قول: مشکل در لاگین

    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    سلام.
    اگر غیر از این باشه باید تعجب کرد. جتی اگه کادر دور فرم رو هم برداری بازم با Escap کاربر فرم جاری رو می بنده و به برنامه ورود میکنه. فرم لاگین رو به عنوان فرم پیش فرض (اولین فرمی که اجرا میشه) قرار بدید. اگر کاربر درست یوزر و پسورد رو وارد کرد، فرم لاگین رو مخفی (Hide ) و فرم بعد از لاگین(همون چیزی که در حال حاضر قرار دادید) رو showdialog کنید. فقط در رویداد formclosing این فرم حتما باید ()Application.Exit رو بنویسید. تا موقع خروج اون فرم مخفی شده (Hide ) هم که فرم مادر هست بسته بشه.
    موفق باشید.
    قبلا چند بار از همین روشی که گفتید استفاده کردم ولی ی جا خوندم ک روش خوبی نیست و بهتره از همون روشی که گفتم استفاده کرد . یعنی اصلا نمیشه کاری کرد که این مشکل پیش نیاد ؟

  4. #4

    نقل قول: مشکل در لاگین

    باید توسط یک پراپرتی مشخص کنید که آیا کاربر مجاز است یا نه. در صورت که کاربر مجاز نیست فرم اصلی هم بسته بشه.
    میتونید از خاصیت DialogResult فرم ها استفاده کنید. در فرم لاگین چک کنید اگر کاربر مجاز بود DialogResult فرم لاگین را OK کنید و فرم لاگین را ببندید:

    public partial class FrmLogin : Form
    {
    public FrmLogin()
    {
    InitializeComponent();
    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
    //if (کاربر مجاز است) ---> this.DialogResult = System.Windows.Forms.DialogResult.OK;
    // after -------------------> this.Close();
    }
    }

    در فرم لود فرم اصلی ، فرم لاگین را showdialog کنید. و بعد اگر DialogResult اش OK نبود(کاربر مجاز نبود) فرم اصلی را هم ببنیدید:

    private void FrmMain_Load(object sender, EventArgs e)
    {
    using (FrmLogin frmlogin = new FrmLogin())
    {
    frmlogin.ShowDialog();
    if (frmlogin.DialogResult != System.Windows.Forms.DialogResult.OK)
    {
    this.Close();
    }
    }
    }

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل در لاگین

    ممنون از جوابتون. کد به درستی کار میکنه. فقط یه سوال: زمانیکه فرم لاگین رو در سازنده صدا میزنم یه مشکلی وجود داره. زمانیکه کاربر فرم رو می بنده (دکمه close فرم یا Esc یا Alt+F4 و ... ) خطای زیر صادر میشه . دلیلش چیه؟
    به عنوان تست،کدها به اینصورت نوشته شده :
    فرم لاگین:
    if (Convert.ToInt32(textBox1.Text) == 1 && Convert.ToInt32(textBox2.Text) == 1)
    {
    this.DialogResult = System.Windows.Forms.DialogResult.OK;
    this.Close();
    }
    else
    MessageBox.Show("Incorrect");

    فرم اصلی (که به عنوان فرم پیش فرض تعریف شده) هم بصورت زیر هست :
    public FrmMain()
    {
    InitializeComponent();
    //
    FrmLogin f1 = new FrmLogin();
    f1.ShowDialog();
    //
    if (f1.DialogResult != System.Windows.Forms.DialogResult.OK)
    this.Close();
    }

    خطای رخ داده :
    errorlogin.JPG

  6. #6

    نقل قول: مشکل در لاگین

    هنوز سازنده کامل اجرا نشده. میتونید خروج رو به عهده formload بزارید:

    bool mustexit;
    public FrmMain()
    {
    InitializeComponent();

    using (FrmLogin frmlogin = new FrmLogin())
    {
    frmlogin.ShowDialog();
    if (frmlogin.DialogResult != System.Windows.Forms.DialogResult.OK)
    {
    mustexit = true;
    }
    }
    }
    private void FrmMain_Load(object sender, EventArgs e)
    {
    if (mustexit)
    this.Dispose();
    }

    که البته چندان جالب نیست. اگر در سازنده کدهای سنگینی ندارید ایجاد فرم لاگین رو در فرم لود انجام بدید.



    در کل این که ابتدا فرم اصلی ساخته بشه و بعد فرم لاگین نمایش داده بشه به نظرم درست نیست. به نظر من فرم آغازین فرم لاگین باشه بهتره. در اینصورت میتونید در صورت مجاز بودن کاربر فرم اصلی را در thread دیگری ران کنید و فرم لاگین را dispose کنید(با این کار نخی که فرم لاگین در آن اجرا شده هم از بین میرود)

    private void btnLogin_Click(object sender, EventArgs e)
    {
    // اگر مجاز بود
    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ShowMainForm));
    t.Start();
    this.Dispose();
    }

    private void ShowMainForm()
    {
    FrmMain frmmain = new FrmMain();
    frmmain.ShowDialog();
    }

  7. #7

    نقل قول: مشکل در لاگین

    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    ممنون از جوابتون. کد به درستی کار میکنه. فقط یه سوال: زمانیکه فرم لاگین رو در سازنده صدا میزنم یه مشکلی وجود داره. زمانیکه کاربر فرم رو می بنده (دکمه close فرم یا Esc یا Alt+F4 و ... ) خطای زیر صادر میشه . دلیلش چیه؟
    به عنوان تست،کدها به اینصورت نوشته شده :
    فرم لاگین:
    if (Convert.ToInt32(textBox1.Text) == 1 && Convert.ToInt32(textBox2.Text) == 1)
    {
    this.DialogResult = System.Windows.Forms.DialogResult.OK;
    this.Close();
    }
    else
    MessageBox.Show("Incorrect");

    فرم اصلی (که به عنوان فرم پیش فرض تعریف شده) هم بصورت زیر هست :
    public FrmMain()
    {
    InitializeComponent();
    //
    FrmLogin f1 = new FrmLogin();
    f1.ShowDialog();
    //
    if (f1.DialogResult != System.Windows.Forms.DialogResult.OK)
    this.Close();
    }

    خطای رخ داده :
    errorlogin.JPG
    من هم همین مشکل رو دارم !

  8. #8
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل در لاگین

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    هنوز سازنده کامل اجرا نشده.
    سوالی که پیش میاد این هست که من فرم لاگین در سازنده رو بعد از متد ()InitializeComponent صدا میزنم. یعنی قاعدتا اول بایستی فرم ساخته بشه. در این مورد توضیح میدید.

  9. #9

    نقل قول: مشکل در لاگین

    برای اینکه متوجه بشید خطا از کجا آب میخوره ، در کلاس program استثناء رو بررسی کنید:

    try
    {
    Application.Run(new FrmMain());
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.TargetSite.ToString());
    }

    متد CreateHandle خطا رو پرتاب کرده.
    نکته : handle فرم در سازنده برابر false هست(this.IsHandleCreated در سازنده false اما در formload برابر true هست).

    راه حل:
    به جای this.Close از Environment.Exit(0); استفاده کنید.

    public FrmMain()
    {
    InitializeComponent();

    using (FrmLogin frmlogin = new FrmLogin())
    {
    frmlogin.ShowDialog();
    if (frmlogin.DialogResult != System.Windows.Forms.DialogResult.OK)
    {
    Environment.Exit(0);
    }
    }
    }

  10. #10
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل در لاگین

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    در کل این که ابتدا فرم اصلی ساخته بشه و بعد فرم لاگین نمایش داده بشه به نظرم درست نیست. به نظر من فرم آغازین فرم لاگین باشه بهتره. در اینصورت میتونید در صورت مجاز بودن کاربر فرم اصلی را در thread دیگری ران کنید و فرم لاگین را dispose کنید(با این کار نخی که فرم لاگین در آن اجرا شده هم از بین میرود)

    private void btnLogin_Click(object sender, EventArgs e)
    {
    // اگر مجاز بود
    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ShowMainForm));
    t.Start();
    this.Dispose();
    }

    private void ShowMainForm()
    {
    FrmMain frmmain = new FrmMain();
    frmmain.ShowDialog();
    }
    دوست عزیز، کد رو امتحان کردم. در هنگام لاگین به درستی کار میکنه ولی در ادامه یه مشکلی ایجاد میکنه. من در قسمت گزارشات برنامم از stimul استفاده کردم موقعیکه قصد گزارش گیری دارم خطای "DragDrop registration did not succed" رخ میده. یه جستجو که انجام دادم خطای فوق بخاطر از بین رفتن Thread اصلی برنامه هست.(یعنی همونجا که فرم اصلی رو dispose میکنیم). من فعلا برنامم رو با همون روش formload راه انداختم ولی گفتم بهتره که اینجا مطرح کنم تا دوستانی که بعدا این تاپیک رو میخونن این نکته رو مدنظر داشته باشن.

  11. #11

    نقل قول: مشکل در لاگین

    فرم لاگين رو قبل از همه فرمها بايد نشون بديد و در صورت صحيح بودن رمز عبور قبل از بستن اين فرم فرم اصلي رو باز كنيد.

  12. #12
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل در لاگین

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک
    فرم لاگين رو قبل از همه فرمها بايد نشون بديد و در صورت صحيح بودن رمز عبور قبل از بستن اين فرم فرم اصلي رو باز كنيد.
    مشکل اینجاست اگر اول فرم اصلی رو باز کنیم، دیگه اجازه بسته شدن فرم لاگین داده نمیشه!
    if (Convert.ToInt32(textBox1.Text) == 1 && Convert.ToInt32(textBox2.Text) == 1)
    {
    FrmMain fmain = new FrmMain();
    fmain.ShowDialog();
    this.Close();
    }
    else
    MessageBox.Show("Incorrect");

  13. #13

    نقل قول: مشکل در لاگین

    اگر ابتدا فرم لاگین رو نمایش میدید ، فرم لاگین آنچنان سنگین نیست و اشکالی نداره در حافظه بمونه، میتونید قبل از نمایش فرم اصلی اونو مخفی کنید.

    this.Hide();
    FrmMain fmain = new FrmMain();
    fmain.ShowDialog();
    this.Close();

    this.Close هم باعث میشه بعد از بسته شدن فرم اصلی، فرم لاگین هم بسته بشه.




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

  1. مشکل در لاگین
    نوشته شده توسط rash44 در بخش PHP
    پاسخ: 2
    آخرین پست: شنبه 31 مرداد 1388, 10:32 صبح
  2. مشکل با لاگین کنترل
    نوشته شده توسط babalengderaz در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: شنبه 29 فروردین 1388, 08:43 صبح
  3. مشکل در لاگین کاربران
    نوشته شده توسط sogoli در بخش PHP
    پاسخ: 6
    آخرین پست: سه شنبه 15 بهمن 1387, 17:46 عصر
  4. مشکل در لاگین کردن به سایت
    نوشته شده توسط mnajafi در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 0
    آخرین پست: شنبه 17 آذر 1386, 10:54 صبح
  5. مشکل در لاگین شدن clientها
    نوشته شده توسط jannati در بخش Classic ASP
    پاسخ: 1
    آخرین پست: چهارشنبه 24 تیر 1383, 18:12 عصر

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

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