PDA

View Full Version : سوال: چطور یک فرم دیگر رو ببندم و دیگری رو باز کنم؟



ABZiko
پنج شنبه 27 فروردین 1394, 11:54 صبح
سلام، بنده می خوام پس از این که کاربر از فرم ورود نرم افزار وارد نرم افزار شد، فرم ورود رو ببنده و فرم جدید رو باز کنه ... از Show و ShowDialog استفاده کردم ولی فرم قبلی رو نمی بنده، می شه راهنمایی کنید ...

shahryari
پنج شنبه 27 فروردین 1394, 11:59 صبح
لازم به اینکار نیست
در فرم لود فرم اصلی ، فرم لاگین رو شو دیالوگ کن ، اگه دیالوگ ریزالت فرم لاگین مخالف اوکی بود ، از اپللیکشن دات اکزیت استفاده کن

Javad_raouf
پنج شنبه 27 فروردین 1394, 15:36 عصر
this.close()
فرمی که درون اون هستی بسته میشه

البته شما اگر فرم لاگینتو فرم پیش فرض برنامت گذاشته باشی بعد از اجرای این دستور برنامت کلا بسته میشه

در تکمیل حرف
shahryari (http://barnamenevis.org/member.php?246498-shahryari) شما بایدفرم اصلی برنامت رو بزاری به عنوان فرم پیش فرض باز بشه و سپس در قسمت Form_Load فرم لاگین رو با ShowDialog باز کنی و...

ABZiko
پنج شنبه 27 فروردین 1394, 15:43 عصر
آقا ممنون، یک سوال دیگه هم دارم، وقتی که در لود شدن فرم اصلی، فرم لاگین باز می شه، بعد از وارد کردن اطلاعات و نمایش دادن یک پیام که شما با موفقیت وارد شدید، من یا همون کاربر باید خودش بیاد پیام رو ببنده، فرم لاگین رو هم ببنده و خب خیلی بده، چی کار می تونم بکنم ؟

ABZiko
پنج شنبه 27 فروردین 1394, 15:47 عصر
یک مشکل دیگه هم هست، وقتی روی دکمه Exit در بالا کلیک می شه، وارد صفحه اصلی می شه ...

shahryari
پنج شنبه 27 فروردین 1394, 16:03 عصر
فرم لاگینت که شو دیالوگ میکنی ، باید مقداری رو ازنوع دیالوگ ریزالت برگردونه....
بعد از بررسی سقم و صحت یوزر پس در فرم لاگین باید بنویس : دیس دات دیالوگ ریزالت مساویه دیالوگ ریزالت دات اوکی.
و در فراخوانی در فرم اصلی بگی : ایف فرم لاگین دات شو دیالوگ مخالف دیالوگ ریزالت دات اوکی ، اپللیکشن دات اکزیت
ببخشید دسترسی به ویژوال نداشتم مجبور شدم کدها رو فارسی بنویسم :لبخند:

Javad_raouf
پنج شنبه 27 فروردین 1394, 16:11 عصر
خسته نباشی دلاور:کف:
ببین داداش شما دو تا فرم داری یکی فرم اصلی و دیگری فرم لاگین دقت کن که فرم پیش فرض برنامت فرم اصلی باشه
حالا توی فرم لاگینت توی رویداد کلیک دکمه لاگین بررسی می کنی اگر طرف اطلاعات رو درست وارد کرده بود بعد از پیام خوش امد گویی این کد رو می نویسی:
this.DialogResult = System.Windows.Forms.DialogResult.OK;

this.Close();
حالا توی
Form_Load کد زیر رو بنویس:
frmLogin frm = new frmLogin();

if (frm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
this.Close();
return;

}

اینجوری هم نیازی نیست کاربر فرم لاگین رو ببنده و هم اگر روی Exit کلیک کنه وارد صفحه اصلی نمیشه

shahryari
پنج شنبه 27 فروردین 1394, 16:19 عصر
البته تجربه شخصی بنده اینه که حالت بالا آمدن فرم اصلی باید در حالت نرمال یا مینمایز باشه و بعد از لاگین در همان رویداد فرم لود فرم اصلی حالت فرم رو به ماکزیماز تبدیل کنی
و اگر فرم اصلی در ابتدا به حالت ماکزیمایز باشه ، فرم لاگین مقابل فرم اصلی قرار میگیره یعنی کابر هم میتونه فرم اصلی رو ببینه و هم فرم لاگینو
موفق باشید

ABZiko
پنج شنبه 27 فروردین 1394, 16:30 عصر
ممنون از هر دو دوست عزیز، الان من اون کد ها رو توی صفحه لاگین که فرم اصلی برنامه ام نیست این طوری نوشتم :


MessageBox.Show("You Entered Succefully !");
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();

اما بعد از این که پیام رو نشون می ده، خود به خود نمی ره و باز باید روی ضربدر کلیک کرد تا بیاد بیرون ...
مشکل بعدی اینه که من کد های فرم لود فرم اصلی رو این طوری نوشتم :


Form4 frmLogIn = new Form4();
frmLogIn.ShowDialog();
if (frmLogIn.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
this.Close();
return;
}

اما باز هم پس از این که پیام OK می شه، فرم لاگین بسته می شه ولی خود فرم لاگین رو دوباره می آره و نه فرم جدید رو ...

Javad_raouf
پنج شنبه 27 فروردین 1394, 16:34 عصر
داداش شما خط 2 کد فرم لودت رو پاک کن یعنی این رو:
frmLogIn.ShowDialog();

ABZiko
پنج شنبه 27 فروردین 1394, 16:47 عصر
آقا دمت گرم، فقط یک مسئله هنوز مونده، من نمی تونم یک بازه زمانی مثلا 2 ثاینه تعریف کنم که بعد از دو ثانیه اون پیام رو ببنده؟

ABZiko
پنج شنبه 27 فروردین 1394, 16:52 عصر
ببخشید یک سوال دیگه هم داشتم ، این کد برای چی هست (که توی فرم لاگین نوشتید) :


this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();


و این چی هست (توی فرم اصلی) :


if (frmLogIn.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
this.Close();
return;
}


یک سوال دیگه هم داشتم، این کد بالا یا همون DialogResult ربطی به بسته شدن MessageBox داره یا نه؟ مثلا نمی شه از Notify اسفتاده کنم؟

Javad_raouf
پنج شنبه 27 فروردین 1394, 17:21 عصر
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
خط اولش خروجی فرم است اینجوری به فرم اصلی می فهمونیم که لاگین با موفقیت انجام شده
خط دوم هم فرم لاگین رو می بنده در حقیقت this اشاره می کنه به کلاس جاری (یعنی همون فرمی که توش هستیم الان)
if (frmLogIn.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
this.Close();
return;
}
توی خط اول همون چیزی که توی فرم لاگین ست کردیم رو چک می کنیم یعنی همون خروجی فرم که بهت گفتم و بررسی می کنیم ببینیم اگر OK نیست فرم اصلی رو هم می بندیم
کلمه return هم برای اینه که کد های بعدی Form_Load دیگه اجرا نشن:لبخندساده:
---------------------------

MessageBox کلا توسط کاربر باید بسته بشه و به هیچ عنوان با برنامه نویسی نمیشه بستش
هم می تونی از Notify استفاده کنی هم می تونی یک فرم دیگه بسازی مثل فرم لاگین ولی شبیه به MessageBox طراحیش کنی و داخلش یک تایمر بزاری که مثلا بعد از 2 ثانیه بسته بشه
کلا نظر منو می خوای نیاز به خوش آمد گویی نیست همین که کاربر وارد سیستم بشه از سرشم زیاده:قهقهه: