PDA

View Full Version : سوال: باز شدن فرم ورود در MDI



ali_general
پنج شنبه 10 اسفند 1391, 09:25 صبح
با سلام خدمت دوستان عزیز

من از روش ایجاد فرم MDI برای برنامه خودم استفاده کردم

حالا یه سوال داشتم

اگه بخوام هنگام اجرای برنامه قبل از اینکه فرم اصلی (والد) لود بشه یه فرم ورود لود بشه که در صورت درست بودن کاربر و کلمه عبور فرم اصلی (والد) رو اجرا کنه باید چیکار کنم؟

ممنون میشم کمکم کنید

erfan_urchin
پنج شنبه 10 اسفند 1391, 09:49 صبح
اگه منظورتونو درست فهمیده باشم به نظرم این کدی که نوشتم به دردتون بخوره

ali_general
پنج شنبه 10 اسفند 1391, 10:01 صبح
ممنونم دوست من
اره دقیقاً منظورم همینه
فقط یه مشکل
من ابتدا فرم MDI خودم ساختم و کلی هم برنامه نوشتم

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

البته می تونم توی کد لود فرم اصلی فرم ورود رو صدا بزنم که باز شه

ولی می خوام اگه بشه ابتدا فرم ورود لود بشه

نمی دونم چیکار کنم؟؟؟؟....

erfan_urchin
پنج شنبه 10 اسفند 1391, 10:11 صبح
ممنونم دوست من
اره دقیقاً منظورم همینه
فقط یه مشکل
من ابتدا فرم MDI خودم ساختم و کلی هم برنامه نوشتم

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

البته می تونم توی کد لود فرم اصلی فرم ورود رو صدا بزنم که باز شه

ولی می خوام اگه بشه ابتدا فرم ورود لود بشه

نمی دونم چیکار کنم؟؟؟؟....
بله . این مشکلیه که خیلیا پیدا میکنن
خیلیا کلی کد مینیویسن بعد یادشون میفته فرم ورود رو نساختن
اما مایکروسافت راه حل این کارو هم گذاشته :لبخندساده:
شما برا این که فرم ورود بسازی بعد اینکه یک new project زدی و فرم جدید رو ساختی ( مثلا Form4)
برای اینکه بخوای اول که برنامه Run میشه فرم4 اجرا بشه باید بری از پنجره Solution explorer ، گزینه Program.cs رو انتخاب کنی تا کدهای مربوطه باز بشه
که شما داخل متد Main این کدهارو میبینی
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
که شما باید خط آخر کد رو به این شکل تغییر بدی
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form4());
}
اگه اسم فرمی که میخواین اول از همه اجرا بشه (Form4) هستش اونجا مینیویسین Form4
در واقع باید اسم فرمی که میخواین اول اجرا بشه رو بنیویسین
موفق باشی

ali_general
پنج شنبه 10 اسفند 1391, 10:45 صبح
مرسی دوست من
2 تا سوال
1- من پروژه خودم رو دارم،حالا باید New Project بزنم و فرم جدید واسه ورود ایجاد کنم یا تو همون پروژه خودم می تونم فرم ویندوز جدید اضافه کنم و کاری که شما گفتی انجام بدم؟؟؟؟؟
2- من بدون اینکه پروژه جدیدی بسازم یک فرم ویندوزی ورود تو پروژه خودم ساختم و طبق گفته شما در Application.Run فرم ورود رو نوشتم که با اجرای برنامه ابتدا فرم ورودم اجرا شد ولی وقتی می خوام با زدن نام کاربر و کلمه عبور فرم اصلی نمایش داده بشه به مشکل بر می خورم و بدون هیچ خطایی برنامه بسته میشه

erfan_urchin
پنج شنبه 10 اسفند 1391, 13:12 عصر
مرسی دوست من
2 تا سوال
1- من پروژه خودم رو دارم،حالا باید New Project بزنم و فرم جدید واسه ورود ایجاد کنم یا تو همون پروژه خودم می تونم فرم ویندوز جدید اضافه کنم و کاری که شما گفتی انجام بدم؟؟؟؟؟
2- من بدون اینکه پروژه جدیدی بسازم یک فرم ویندوزی ورود تو پروژه خودم ساختم و طبق گفته شما در Application.Run فرم ورود رو نوشتم که با اجرای برنامه ابتدا فرم ورودم اجرا شد ولی وقتی می خوام با زدن نام کاربر و کلمه عبور فرم اصلی نمایش داده بشه به مشکل بر می خورم و بدون هیچ خطایی برنامه بسته میشه
جواب 1- تو همون پروژه خودتون میتونین یه فرم جدید ایجاد کنید و کارهاتون رو انجام بدین. نیازی نیست یه پروژه جدید باز کنید

جواب 2- شما باید در رویداد Button (همون دکمه ای که باعث ورود کاربر میشه) این کد هارو بنویسین
فرض کنید شما میخواین وقتی کاربر روی Button کلیک کرد فرم 2 باز بشه پس با این کد میتونین این کار رو انجام بدین
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}

که شما احتمالا به جای این کد ، کد this.Close() یا یه چیزی مثل این نوشتین که فرمتون بسته میشه

ali_general
شنبه 12 اسفند 1391, 08:17 صبح
ممنون دوست من

من تونستم این کارو انجام بدم
واقعاً ممنونم
فقط یه مشکل کوچیک دیگه موقعی که فرم اصلی برنامه نمایش داده میشه فرم ورود بسته نمیشه

هم تو کلیک دکمه ورود فرم ورود نوشتم که فرمش بسته شه هم تو لود فرم اصلی ولی در هر 2 صورت فرم ورود بسته نمیشه ...

البته با Hide تونستم ببندمش
ولی می دونم اصولی نیست باید close شه تا تو حافظه نمونه...

erfan_urchin
شنبه 12 اسفند 1391, 19:43 عصر
ممنون دوست من

من تونستم این کارو انجام بدم
واقعاً ممنونم
فقط یه مشکل کوچیک دیگه موقعی که فرم اصلی برنامه نمایش داده میشه فرم ورود بسته نمیشه

هم تو کلیک دکمه ورود فرم ورود نوشتم که فرمش بسته شه هم تو لود فرم اصلی ولی در هر 2 صورت فرم ورود بسته نمیشه ...

البته با Hide تونستم ببندمش
ولی می دونم اصولی نیست باید close شه تا تو حافظه نمونه...
خب معلومه بسته نمیشه!! چون شما اومدی تو program.cs نوشتی که فرم اصلیت Form4 باشه در واقع الان فرم اصلیت فرم ورود هستش و همه ما میدونیم که وقتی یه فرم اصلی بازه و یه فرم فرعی شما نمیتونی کاری کنی که فرم اصلی (یعنی فرم ورودت) بسته بشه اما فرم فرعیت (یا همون صفحه اصلی برنامت) بسته نشه
دقت کن که فرم اصلی با صفحه اصلی خیلی فرق داره، شما وقتی میزنی Application.Run(new Form4()); فرم 4 میشه فرم اصلیت ، یعنی فرمیه که اول از همه Run میشه
اما نا امید نشو مایکروسافت فکر اینجا رو هم کرده :لبخند:
شما با استفاده از متد Hide فرم4 (فرم اصلی یا همون صفحه ورود)رو پنهان کن و برو در رویداد های فرم1 (صفحه اصلی برنامت) در رویداد Form_Closed این کد رو بنویس
private void Form4_FormClosed(object sender, FormClosedEventArgs e)
{
Environment.Exit(0);
}

این کد باعث میشه به محض بسته شدن فرم1 (صفحه اصلی) کل برنامت بسته بشه
بازم میگم، فرم اصلی با صفحه اصلی فرق داره ها :لبخندساده:
فقط اگه در مورد رویداد ها (Event) اطلاعی نداری و نمیدونی باید از کجا اونارو پیدا کنی بگو تا راهنماییت کنم