PDA

View Full Version : سوال: ترتیب اجرای فرمها



sara.f
سه شنبه 17 شهریور 1388, 19:11 عصر
سلام به همگی.
من دو تا فرم دارم که یکی واسه صفحه اصلی هست و یکی واسه login کردن.
اول فرم صفحه اصلی را ایجاد کردم و بعد فرم login.
در فرم login صفحه ورود را فراخوانی می کنم ولی اول صفحه اصلی باز میشه.
توی یه پروژه دیگم درسته ولی این یکی نه.
چکار کنم که اول صفحه login باز بشه.
مرسی :لبخندساده:

اَرژنگ
سه شنبه 17 شهریور 1388, 19:29 عصر
سلام به همگی.
من دو تا فرم دارم که یکی واسه صفحه اصلی هست و یکی واسه login کردن.
اول فرم صفحه اصلی را ایجاد کردم و بعد فرم login.
در فرم login صفحه ورود را فراخوانی می کنم ولی اول صفحه اصلی باز میشه.
توی یه پروژه دیگم درسته ولی این یکی نه.
چکار کنم که اول صفحه login باز بشه.
مرسی :لبخندساده:

http://barnamenevis.org/forum/showthread.php?t=88552&page=3

sara.f
سه شنبه 17 شهریور 1388, 20:08 عصر
مرسی از کمکتون.
ولی من از کد شما متوجه نشدم، چکار کردید که اول login باز شده.:ناراحت:
من کد صفحه login را نمیخوام، بلکه میخوام بدونم چکار کنم که اول فرم login بازبشه.
توی یکی دیگه از برنامه هام اول از همه صفحه login باز میشه، ولی توی این یکی نه.
میخوام بدونم چون اول فرم اصلی را ایجاد کردم و بعد فرم login ، اینطوری میشه؟ یا ربطی به ترتیب ایجاد نداره؟

اَرژنگ
سه شنبه 17 شهریور 1388, 20:24 عصر
مرسی از کمکتون.
ولی من از کد شما متوجه نشدم، چکار کردید که اول login باز شده.:ناراحت:
من کد صفحه login را نمیخوام، بلکه میخوام بدونم چکار کنم که اول فرم login بازبشه.
توی یکی دیگه از برنامه هام اول از همه صفحه login باز میشه، ولی توی این یکی نه.
میخوام بدونم چون اول فرم اصلی را ایجاد کردم و بعد فرم login ، اینطوری میشه؟ یا ربطی به ترتیب ایجاد نداره؟
در اون برنامه‌تان که فرم لگین اول باز میشه، وقتی که فرم لگینتان را میبندید برنامه‌تان بسته نمیشه؟

اگر که نه، برنامه‌تان را بفرستید یک نگاه بندازم.
در ضمن جواب اینکه چطوری فرم لگین اول نشان داده میشه را در فایل Program.cs میتوانید ببینید.

sara.f
سه شنبه 17 شهریور 1388, 20:48 عصر
مرسی واقعا.:تشویق:
درست شد.
فقط اگر جواب اون سوالم را هم که واستون فرستادم بدید، خیلی دیگه خوب میشه.
اون یکی پروژمم که بهتون گفتم اول login باز میشه به خاطر همین program.cs بود.:لبخندساده:

mahdi_7610
سه شنبه 17 شهریور 1388, 21:17 عصر
توی فرم های logon و فرم اصلی شما باید فرم دوم را فرم logon در نظر بگیرید و فرم اول را به عنوان فرم اصلی برنامه .
به خاطر این که بعد از اینکه شما فرم logon را رد میکنید باید این فرم کامل از حافظه خارج بشه .
در غیر این صورت فرم logon فقط hide میشه و از حافظه خارج نمی شه .

به همین دلیل هست که فرم logon را به عنوان فرم دوم در نظر میگیرن .

اما اگه برعکس عمل کنید فرم logon که بسته بشه برنامه خاتمه خواهد یافت . و فرم اصلی برنامه اجرا نخواهد شد .

برای اینکه فرم دوم اول بالا بیاد باید این قسمت را Form2 در نظر بگیری .

Application.Run(new Form1());

موفق باشی .

sara.f
سه شنبه 17 شهریور 1388, 21:58 عصر
آره درست می گید، وقتی فرم login را می بندم، فرم اصلی هم بسته میشه.
خوب من منظورتون را نفهمیدم که می گید فرم login را دوم تعریف کنم، اون یکی را اول تعریف کنم. :متفکر:
یعنی چی؟
من الان مشکلم برای باز کردن login به عنوان فرم اول حل شد.
الان نمی دونم راه حل اینکه شما می گید، چیه؟

mahdi_7610
سه شنبه 17 شهریور 1388, 22:11 عصر
دلیل اینکه چرا فرم دوم را فرم logon انتخاب میکن را گفتم . چون فرم بعد از بسته شدن کامل از حافظه خارج بشه .

sara.f
سه شنبه 17 شهریور 1388, 22:25 عصر
دلیل اینکه چرا فرم دوم را فرم logon انتخاب میکن را گفتم . چون فرم بعد از بسته شدن کامل از حافظه خارج بشه .
نه دلیلشو نمیخوام.
میگم یعنی چی login را فرم دوم بگیرم؟
یعنی اسمش را بذارم form 2؟ آخه اسمش که مهم نیست.
متوجه نمیشششششششششم. :گریه:

mahdi_7610
سه شنبه 17 شهریور 1388, 22:50 عصر
نه دلیلشو نمیخوام.
میگم یعنی چی login را فرم دوم بگیرم؟
یعنی اسمش را بذارم form 2؟ آخه اسمش که مهم نیست.
متوجه نمیشششششششششم. :گریه:
من چیز جدیدی نگفتم . همون که مشکلتون حل شده کافیه :افسرده:
ببینید شما 2 فرم دارید . یکی فرم logon هست و یکی دیگه فرم اصلی برنامه

خب فرم logon بعد از عبور باید بسته بشه و برنامه اصلی اجرا بشه . خب باید form2 را logon بگیرید و برنامه اصلی را form1
برای اینکه form2 یا همون logon ابتدا بالا بیاد باید توی قسمت زیر Form1 را به Form2 تغییر بدی .
Application.Run(new Form1());

sara.f
سه شنبه 17 شهریور 1388, 23:06 عصر
خب فرم logon بعد از عبور باید بسته بشه و برنامه اصلی اجرا بشه . خب باید form2 را logon بگیرید و برنامه اصلی را form1
برای اینکه form2 یا همون logon ابتدا بالا بیاد باید توی قسمت زیر Form1 را به Form2 تغییر بدی .
Application.Run(new Form1());

منم تمام این کارا رو که می گید،انجام دادم،ولی همون طور که گفتید، وقتی login را می بندم، فرم اصلی هم، همراش بسته میشه.:عصبانی++:
باید چکار کنم که فرم اصلی بسته نشه؟!

mahdi_7610
چهارشنبه 18 شهریور 1388, 00:01 صبح
منم تمام این کارا رو که می گید،انجام دادم،ولی همون طور که گفتید، وقتی login را می بندم، فرم اصلی هم، همراش بسته میشه.:عصبانی++:
باید چکار کنم که فرم اصلی بسته نشه؟!
توی Form_Load فرم اول کد زیر را وارد کن


Form2 frm = new Form2();
frm.ShowDialog();

توی حالت زیر هم همون Form1 را قرار بده

Application.Run(new Form1());

Amir Oveisi
چهارشنبه 18 شهریور 1388, 00:10 صبح
ببینید چیزی به اسم فرم اول یا دوم نداریم!
یک مفهوم به اسم فرم اصلی برنامه داریم که به فرمی گفته میشه که در کلاس Program داخل متد Main اجرا می شود. به این صورت :

class Program
{
Main(...)
{
...
Application.Run(new Form1());
...
}
}

در این کد Form1 به عنوان فرم اصلی برنامه در نظر گرفته میشه و هر موقع این فرو بسته بشه (close منظورمه نه hide) کل برنامه شما نیز بسته خواهد شد.

حالا در مورد مشکل شما، قطعا چون فرم login شما به عنوان فرم اصلی برنامه هست، با ابسته شدن اون برنامه هم بسته میشه.
راه حل اینه که فرم اصلی برنامه رو تغییر بدید (از همون متد Main). مثلا اگر میخواهید بعد از فرم login، فرم x نشون داده بشه، فرم x رو به عنوان فرم اصلی در نظر بگیرید. با این کار در صورت بسته شدن فرم login برنامه شما بسته نمیشه. اما یک مسئله ای که با این کار بوجود میاد اینه که موقع اجرای برنامه اول فرم x نشون داده میشه و خبری از فرم login نخواهد بود! برای رفع این مسئله باید در رویداد Load فرم x ، فرم x را hide کرده و فرم login را show کنید. (بهتره ShowDialog کنید).

به این کد ها نگاه کنید:
private FormX_Load(...(
{
this.Hide();
LoginForm login = new LoginForm();
if(login.ShowDialog() == DialogResult.Ok)
{
this.Show();
}
else
//یعنی اطلاعات login اشتباه بوده و هر کاری خواستین میتونین اینجا انجام بدین
}

در فرم Login هر جایی که اطلاعات ورودی کاربر درست بودند این کار رو بکنید:
this.DialogResult = DialogResult.Ok;

با این کار مشکل شما حل خواهد شد. در کل منطق ساده ای داره، اگر سوالی بود مطرح کنید تا پاسخ داده بشه.

موفق باشید

sara.f
چهارشنبه 18 شهریور 1388, 13:12 عصر
سلام.
مرسی از پاسخ کاملتون، آقای برمودا ! :تشویق:
فقط من به مشکل برخوردم.
1. وقتی USER و PASS را اشتباه وارد می کنم؛ اول پیغام "bye bye " میده، بعد پیغام "invalid user & pass" میده و بعدشم فرم اصلی باز میشه.
2. اگر user و pass را درست وارد کنم؛ یکبار دیگه صفحه login باز میشه و بعد از login کردن مجدد، این پیغام خطا را میده.(پیغام خطا را ضمیمه کردم).

من کد صفحه login را به این صورت نوشتم.


privatevoid button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "admin" && textBox2.Text.Trim() == "1234")
{
this.DialogResult = DialogResult.OK;
}
else
{
MessageBox.Show("ByeBye!");
this.DialogResult = DialogResult.Abort;
}
}


البته این خط را

MessageBox.Show("ByeBye!");
this.DialogResult = DialogResult.Abort;
توی یک برنامه دیگه توی همین سایت دیده بودم و نمی دونم درست استفاده کردم یا نه؟!:لبخند:
برای else در صفحه اصلی هم اینو گذاشتم


privatevoid Form1_Load(object sender, EventArgs e)
{
this.Hide();
Form2 f2 = newForm2();
if (f2.ShowDialog() == DialogResult.OK)
{
this.ShowDialog();
}
else
MessageBox.Show("Invalid username & password");
}

حالا اشکال کار من کجاست؟! :ناراحت:
مرسی :لبخندساده:

mahdi_7610
چهارشنبه 18 شهریور 1388, 13:49 عصر
خب اونی که من توی پست #12 (http://barnamenevis.org/forum/showpost.php?p=800717&postcount=12) گفتم با اینی که دوستمون برمودا گفتن چه فرقی میکنه ؟

اینطوری عمل کن .

توی فرم logon این کدها را قرار بده .


private void button1_Click(object sender, EventArgs e)
{
if (txtBox1.Text.Trim() == "admin" && txtBox2.Text.Trim() == "1234")
{
this.Close();
}
else if (txtBox1.Text.Trim() == "" && txtBox2.Text.Trim() == "")
{
MessageBox.Show("یوزرنیم و پسوورد را وارد کنید", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
MessageBox.Show("رمز وارد شده اشتباه است", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}

اینم توی فرم لود فرم 1 قرار بده .


private void Form1_Load(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}

mahdi_7610
چهارشنبه 18 شهریور 1388, 14:10 عصر
1. وقتی USER و PASS را اشتباه وارد می کنم؛ اول پیغام "bye bye " میده، بعد پیغام "invalid user & pass" میده و بعدشم فرم اصلی باز میشه.
خب خودتون توی کد اول گفتید اگه یوزر و پسوورد اشتباه بود پیغام "bye bye " را بده . وقتی این پیغام داده میشه برنامه خاتمه پیدا میکنه و فرم برنامه اصلی باز میشه و سپس کد Invalid username & password از فرم دوم اجرا میشه و چون شما گفتید اگه DialogResult اوکی شد this.ShowDialog(); اجرا بشه . و چون DialogResult در باعث اجرا شدن رویداد else شده توی ShowDialog خطا میگیره .


2. اگر user و pass را درست وارد کنم؛ یکبار دیگه صفحه login باز میشه و بعد از login کردن مجدد، این پیغام خطا را میده.(پیغام خطا را ضمیمه کردم).
خودتون توی کد اول گفتید اگه پسوورد و یوز درست بود دوباره این صفحه نمایش داده بشه . در حالی که باید بگید این صفحه را ببند .

sara.f
چهارشنبه 18 شهریور 1388, 14:36 عصر
خب اونی که من توی پست #12 (http://barnamenevis.org/forum/showpost.php?p=800717&postcount=12) گفتم با اینی که دوستمون برمودا گفتن چه فرقی میکنه ؟

من در پست 12 به این دقت نکردم که نوشتید form2.showdialog ، چون من خودم از این کدها استفاده کرده بودم ولی به جای showdialog از show استفاده کرده بودم و با run کردن برنامه، هر دو تا فرم با هم باز می شد ولی الان درست شد. مرسی.
فقط چند تا سوال داشتم که اگه جواب بدی ممنون میشم.
1. چرا دیگه از this.hide در form1_load استفاده نکردی؟
2. چرا با اینکه در program.cs نوشتم form1 ولی اول (form2(login باز میشه؟! در صورتی که Mr.bermooda گفت باید از this.hide استفاده کنیم تا ابتدا فرم 2 باز بشه، ولی الان بدون استفاده از this .hide ، این اتفاق می افته! :متفکر:
3. چرا از این استفاده نکردی؟


if (textBox1.Text.Trim() == "admin" && textBox2.Text.Trim() == "1234")
{
this.DialogResult = DialogResult.OK;
}


4.اینا چین؟! :لبخند:


MessageBoxButtons.OK, MessageBoxIcon.Warning

هزارن بار ممنون :لبخندساده:

mahdi_7610
چهارشنبه 18 شهریور 1388, 15:06 عصر
1. چرا دیگه از this.hide در form1_load استفاده نکردی؟
خوب کاملا مشخصه . به خاطر این که من گفتم Form2 را ShowDialog کن . به خاطر همین دیگه نیازی نیست form1 را this.hide کنیم .


2. چرا با اینکه در program.cs نوشتم form1 ولی اول (form2(login باز میشه؟! در صورتی که Mr.bermooda گفت باید از this.hide استفاده کنیم تا ابتدا فرم 2 باز بشه، ولی الان بدون استفاده از this .hide ، این اتفاق می افته! :متفکر:
دلیلش را توی سوال اول گفتم . چون ShowDialog که میکنیم خودش اون فرم را hide می کنه .


3. چرا از این استفاده نکردی؟
به خاطر این که این دستور میگه اگه یوز و پسوورد درست بود یک پیغام نمایش داده بشه . در صورتی که شما اصلا بهش پیغامی تعریف نکردید . و اصلا نیازی به اون نداریم . ما میخواهیم در صورت درست بودن پسورد و یوزر این فرم بسته بشه و فرم برنامه باز بشه . به خاطر همین باید بنویسیم this.close()


4.اینا چین؟! :لبخند:
اینا باعث میشن وقتی کاربر پسوورد و یوزر را اشتباه وارد کرد یک پیغام بهش نمایش داده بشه . این کدها هم باعث میشن توی اون پیغامی که نمایش داده میشه یک ایکون اخطار و یک دکمه ok برای تائید نمایش دهده بشه .

موفق باشی

اَرژنگ
چهارشنبه 18 شهریور 1388, 16:15 عصر
این روش استفاده از قایم کردن و نشان دادن فرم که از یک منطق یکراست برایه پیاده شدن استفاده نمیکند را چرا به یک روشی که علنی منطق کارکردن برنامه را بازگوئی میکند ترجیح میدید؟
بدانه عرض جسارت ولی نمیدانم چجوری بگم، اینکار یکمی انحرافی است. ولی اگر مزایایی دارد که من قابل به درکش نیستم، لطفا به دریابی من که اینکه چرا از روشی که (به نظر من) صریحاً منطق برنامه را بازگو نمیکند استفاده میکنید را کمک کنید.
لطفا اینکه از این روش انتقاد میکنم را به خود نگیرید، من دارم از روش انتقاد میکنم نه از کسانی که ازش استفاده میکنند.
با احترام

sara.f
چهارشنبه 18 شهریور 1388, 16:35 عصر
این روش استفاده از قایم کردن و نشان دادن فرم که از یک منطق یکراست برایه پیاده شدن استفاده نمیکند را چرا به یک روشی که علنی منطق کارکردن برنامه را بازگوئی میکند ترجیح میدید؟
بدانه عرض جسارت ولی نمیدانم چجوری بگم، اینکار یکمی انحرافی است. ولی اگر مزایایی دارد که من قابل به درکش نیستم، لطفا به دریابی من که اینکه چرا از روشی که (به نظر من) صریحاً منطق برنامه را بازگو نمیکند استفاده میکنید را کمک کنید.
لطفا اینکه از این روش انتقاد میکنم را به خود نگیرید، من دارم از روش انتقاد میکنم نه از کسانی که ازش استفاده میکنند.
با احترام
سلام آقای آرژنگ!
بازم یک جای کار مشکل داره.:افسرده:
همه دوستانم مطالب خیلی خوبی گفتن، ولی همش مشکل پیش میاد.
الان فهمیدم، حتی اگر pass,user را اشتباه وارد کنم یا اصلا وارد نکنم، اگر فرم login را ببندم، به هر حال فرم اصلی باز میشه!!!!!!!!!!!!! :ناراحت:
یه راهه اساسی و غیر انحرافی به من بگید. مرسی مرسی مرسی :ناراحت:

اَرژنگ
چهارشنبه 18 شهریور 1388, 17:18 عصر
سلام آقای آرژنگ!
بازم یک جای کار مشکل داره.:افسرده:
همه دوستانم مطالب خیلی خوبی گفتن، ولی همش مشکل پیش میاد.
الان فهمیدم، حتی اگر pass,user را اشتباه وارد کنم یا اصلا وارد نکنم، اگر فرم login را ببندم، به هر حال فرم اصلی باز میشه!!!!!!!!!!!!! :ناراحت:
یه راهه اساسی و غیر انحرافی به من بگید. مرسی مرسی مرسی :ناراحت:

http://barnamenevis.org/forum/showthread.php?t=88552&page=3

sara.f
چهارشنبه 18 شهریور 1388, 18:08 عصر
http://barnamenevis.org/forum/showthread.php?t=88552&page=3
این که دقیقا همون link توی پست2 هست. :متعجب:
خب من اگه اینارو فهمیده بودم که دیگه الان اینجا نبودم.:ناراحت:
من این کدها رانمییییییییییییییییییییی ییییییییییفهمم.
اصلا نمی دونم user control چیه؟!
تا میام روی جواب هر کدوم از دوستا کار کنم و بفهمم چیه، وقتی به اشکال بر می خورم و سوال می پرسم، یکی دیگه از دوستان میاد و یک چیزه دیگه میگه، الانم که با این link بر گشتم سر خونه اول. :گریه:
من تا حالا با اینایی که شما میگید کار نکردم، از دو روز پیش دارم سوال می کنم و فردا هم باید پروژه را تحویل بدم، در حال حاضر نمی تونم هر دفعه روی یک مطلب جدید کار کنم، باید بعد از تحویل پروژم و با خیال آسوده روی راه های جدید پیشنهادی شما فکر کنم و بفهمم چیه.
من الان میخوام فقط اشکالم توی آخرین پستم حل بشه، اونوقت دیگه سوالی ندارم.
دوستای من، لطفا جوابی در راستای راه حلم بگید، در حال حاضر راه حل جدید نمییییخوام.
یک دنیا ممنونم دوست جونا! :ناراحت:

اَرژنگ
چهارشنبه 18 شهریور 1388, 18:22 عصر
این که دقیقا همون link توی پست2 هست. :متعجب:
خب من اگه اینارو فهمیده بودم که دیگه الان اینجا نبودم.:ناراحت:
من این کدها رانمییییییییییییییییییییی ییییییییییفهمم.
اصلا نمی دونم user control چیه؟!
تا میام روی جواب هر کدوم از دوستا کار کنم و بفهمم چیه، وقتی به اشکال بر می خورم و سوال می پرسم، یکی دیگه از دوستان میاد و یک چیزه دیگه میگه، الانم که با این link بر گشتم سر خونه اول. :گریه:
من تا حالا با اینایی که شما میگید کار نکردم، از دو روز پیش دارم سوال می کنم و فردا هم باید پروژه را تحویل بدم، در حال حاضر نمی تونم هر دفعه روی یک مطلب جدید کار کنم، باید بعد از تحویل پروژم و با خیال آسوده روی راه های جدید پیشنهادی شما فکر کنم و بفهمم چیه.
من الان میخوام فقط اشکالم توی آخرین پستم حل بشه، اونوقت دیگه سوالی ندارم.
دوستای من، لطفا جوابی در راستای راه حلم بگید، در حال حاضر راه حل جدید نمییییخوام.
یک دنیا ممنونم دوست جونا! :ناراحت:

در مثالی که فرستادم اصلاً UserControl استفاده نشده.
یک پروژه کامل برایه لگین است، فقط اجراش کنید کار میکند، مشکلتان چیه؟

sara.f
چهارشنبه 18 شهریور 1388, 19:02 عصر
در مثالی که فرستادم اصلاً UserControl استفاده نشده.
یک پروژه کامل برایه لگین است، فقط اجراش کنید کار میکند، مشکلتان چیه؟
اونی که شما ضمیمه کردی،نه.
یک لینک توی همون صفحه بود که از user control استفاده کرده بود.
اون فایلی هم که شما ضمیمه کردی، get set داره، من فقط تعریف get set را تو دانشگاه بهمون گفتن :لبخند::گریه: تا حالا باهاش کار نکردم، نمی دونم واقعا واسه چی خوبه.
الانم کدتون را گذاشتم توی برنامم ولی نمی فهمم بعضی جاهاش چیکار می کنه؟!
مثلا در صورتیکه واسه باتن های ok ,cancel کد ننوشتید، پس چطوری کار می کنن؟!
من باید خط به خط برنامه را توضیح بنویسم. :گریه:
مثلا این چیه؟ توی کلاس security


if (Math.Abs(LoginMatch) + Math.Abs(PasswordMatch) == 0)

اَرژنگ
چهارشنبه 18 شهریور 1388, 19:12 عصر
اونی که شما ضمیمه کردی،نه.
یک لینک توی همون صفحه بود که از user control استفاده کرده بود.
اون فایلی هم که شما ضمیمه کردی، get set داره، من فقط تعریف get set را تو دانشگاه بهمون گفتن :لبخند::گریه: تا حالا باهاش کار نکردم، نمی دونم واقعا واسه چی خوبه.
الانم کدتون را گذاشتم توی برنامم ولی نمی فهمم بعضی جاهاش چیکار می کنه؟!
مثلا در صورتیکه واسه باتن های ok ,cancel کد ننوشتید، پس چطوری کار می کنن؟!
من باید خط به خط برنامه را توضیح بنویسم. :گریه:
مثلا این چیه؟ توی کلاس security


if (Math.Abs(LoginMatch) + Math.Abs(PasswordMatch) == 0)


get set همچین کار بخصوصی انجام نمیده، فقط برایه نگهداری پراپرتی هستش.

اون خطی که میگید، تفاوت لگین و کمله عبور را با لگین و کلمه عبوری که کاربر وارد کرده جمع میزنه، اگر جمع مقدار مطلق تفاوتها صفر بود ، درست (ترو) جواب میفرسته، اگر هم که نه غلط (فالس) جواب میفرسته.

باور کنید از این پروژه ساده‌تر نمیشه درست کرد، کارهای استادان در این تالار هست ولی اگر این پروژه ساده من برایه شما مکشل ایجاد میکند، کار بهتر استادان غیره قابل تفسیر است.

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

Amir Oveisi
پنج شنبه 19 شهریور 1388, 01:42 صبح
تو اون قسمت کدی که گذاشته بودم که یه شرط بود، شما به جای if از while استفاده کنید که تا زمانیکه کاربر اطلاعات درست رو وارد نکنه دوباره فرم login نشون داده بشه.

توضیح مهم:
نمونه کد ها و یا توضیحاتی که در تمام تاپیک ها از بنده می بینید در حد یک hint هستند و الزاما بدون ایراد نخواهند بود و نتیجه گیری کلی به عهده حود شما می باشد.

موفق باشید

Open-Source
پنج شنبه 19 شهریور 1388, 16:17 عصر
دوست عزیز من این کار رو میکنم.

توی Load فرم اصلی فرم Login رو بصورت ShowDialog باز میکنم(اینجا میتونی فرم اصلی رو هم Hide کنی).
بعد توی فرم Login اگه پسورد درست بود فرم رو Close میکنم و فرم main رو Show میکنم.
اگر کاربر رمز را اشتباه وارد کرد و خواست کل برنامه رو ببنده از:

Environment.Exit(0);
استفاده میکنم.

اینم یه نمونه برنامه:

saeeedft
پنج شنبه 19 شهریور 1388, 16:40 عصر
سلام دوست عزیز، برای مسئله به این سادگی چرا خودتو اذیت میکنی، همون کدهای صفحه قبل جوابتو میده، چون بچه ها لطف دارند روش های مختلفی رو میذارن ، شما با دیدن اونا سردرگم میشید،یک روش رو انتخاب کنیدبا همون کار کنید.

sara.f
جمعه 20 شهریور 1388, 00:17 صبح
سلام به همگی!
مرسی بچه ها،من مشکلم با همون برنامه آقای ارژنگ حل شد.
فقط یک نکته کوچیک واسه بهبود برنامه آقای ارژنگ می خواستم اضافه کنم، که اگر احتمالا کسی خواست از برنامه ای که آقای ارژنگ گذاشتن، استفاده کنه،می تونه در اون قسمت از کدی که در program.cs نوشته شده:

if (passwordValid )
{
Application.Run(newForm1());
}

این شرط را هم اضافه کنه


(dialogResult == DialogResult.OK)

یعنی میشه:


if (passwordValid & (dialogResult == DialogResult.OK))
{
Application.Run(new Form1());
}

چرا که وقتی کاربر روی دکمه cancel میزنه، مسلما از run کردن برنامه منصرف شده، پس دیگه نیازی به باز شدن فرم اصلی نیست.
اما اگر شرطی که گفتم نباشه، چنانچه کاربر user ,pass را درست وارد کنه و بعد cancel را بزنه، باز هم فرم اصلی باز میشه.
این نکته خیلی کوچیکی بود که به نظرم اومد بهتره بگم، هر چند که می دونم خیلی از دوستان این مورد را می دونستند.
پیروز باشید. :لبخندساده:

اَرژنگ
جمعه 20 شهریور 1388, 05:27 صبح
سلام به همگی!
مرسی بچه ها،من مشکلم با همون برنامه آقای ارژنگ حل شد.
فقط یک نکته کوچیک واسه بهبود برنامه آقای ارژنگ می خواستم اضافه کنم، که اگر احتمالا کسی خواست از برنامه ای که آقای ارژنگ گذاشتن، استفاده کنه،می تونه در اون قسمت از کدی که در program.cs نوشته شده:

if (passwordValid )
{
Application.Run(newForm1());
}
این شرط را هم اضافه کنه


(dialogResult == DialogResult.OK)
یعنی میشه:


if (passwordValid & (dialogResult == DialogResult.OK))
{
Application.Run(newForm1());
}
چرا که وقتی کاربر روی دکمه cancel میزنه، مسلما از run کردن برنامه منصرف شده، پس دیگه نیازی به باز شدن فرم اصلی نیست.
اما اگر شرطی که گفتم نباشه، چنانچه کاربر user ,pass را درست وارد کنه و بعد cancel را بزنه، باز هم فرم اصلی باز میشه.
این نکته خیلی کوچیکی بود که به نظرم اومد بهتره بگم، هر چند که می دونم خیلی از دوستان این مورد را می دونستند.
پیروز باشید. :لبخندساده:
با تشکر بسیار،
از اینکه اشکال را گفتید خیلی خوشحال شدم ،بالاخره یکی اشکال ما را بهمان میگه،
نکته‌ای که گفتید کاملا درست است نشان میده را موارد بسیار ساده هم میشه اشتباه کرد، اگرچه پیدا کردن این اشکال ساده نیست!!
یک چیزی که همیشه فکرم را مشغول میکنه این است که در این چنین مواردی بهتر است که از این نوع کد استفاده بشه :

if (dialogResult!= DialogResult.OK) return;
if (passwordValid)

یا از همان کد شما:

if (passwordValid & (dialogResult == DialogResult.OK))
اگرچه منتقاً هر دو یک چیز هستند، ولی اولیش اینکه دیگر احتیاج به ادامه دادن نیست را صریحا اعلام میکنه، من نمیدانم از لحاظ خوانائی کد کدام بهتر است (من فکر میکنم اولی ولی برایه اینکه همه شرائط و پیشروی را از هم جدا نگه میداره، از یک حالت ساده‌تر به نظر میاد).