تور لحظه آخری
امروز : دوشنبه ، 18 تیر 1403    احادیث و روایات:  امام سجاد (ع):حق بزرگ‏تر خداوند اين است كه او را بپرستى و چيزى را با او شريك نسازى، كه اگر خال...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

اتاق فرار

خرید ووچر پرفکت مانی

تریدینگ ویو

کاشت ابرو

لمینت دندان

ونداد کولر

صرافی ارکی چنج

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

سرور اختصاصی ایران

تور دبی

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پیچ و مهره

طراحی کاتالوگ فوری

دانلود کتاب صوتی

تعمیرات مک بوک

Future Innovate Tech

آموزشگاه آرایشگری مردانه شفیع رسالت

پی جو مشاغل برتر شیراز

قیمت فرش

آموزش کیک پزی در تهران

لوله بازکنی تهران

میز جلو مبلی

هتل 5 ستاره شیراز

آراد برندینگ

رنگ استخری

سایبان ماشین

قالیشویی در تهران

مبل استیل

بهترین وکیل تهران

شرکت حسابداری

نظرسنجی انتخابات 1403

استعداد تحلیلی

کی شاپ

خرید دانه قهوه

دانلود رمان

وکیل کرج

آمپول بیوتین بپانتین

پرس برک

بهترین پکیج کنکور

خرید تیشرت مردانه

خرید نشادر

خرید یخچال خارجی

وکیل تبریز

اجاره سند

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید ووچر پرفکت مانی

خرید سی پی ارزان

خرید ابزار دقیق

بهترین جراح بینی خانم

تاثیر رنگ لباس بر تعاملات انسانی

خرید ریبون

ثبت نام کلاسینو

 






آمار وبسایت

 تعداد کل بازدیدها : 1805513116




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

سوال در مورد فرم های برنامه در سی شارپ -


واضح آرشیو وب فارسی:سایت ریسک: سوال در مورد فرم های برنامه در سی شارپ Milo 10 اسفند 1386, 15:02می بخشید من سوالی دارم در مورد فرم ها . راستش یک برنامه دارم که داخلش از دو تا فرم باید استفاده کنم . یک دکمه روی فرم اولی قرار دادم برای اینکه به فرم دومی وارد بشه ، منتها نمی خوام وقتی فرم 2 اجرا شد فرم 1 ام هم نمایش داده بشه . پس اومدم و فرم 1 رو hide کردم . و برای اینکه باز هم برگردم به فرم 1 باید فرم 2 بسته بشه . ولی اینبار نباید از hide استفاده بشه چون با بستن برنامه برنامه خاتمه پیدا نمی کنه !! :-/ حالا باید از چه دستوری استفاده کنم ؟ برای vb می شه از دستور end استفاده کرد ولی در #C نمی دونم باید چه کاری رو انجام بدم . ممنون می شم اگر راهنمایی کنید . :) saalek110 10 اسفند 1386, 16:42برای خروج برنامه از دستور زیر استفاده کنید: Application.Exit(); اگر اشتباه متوجه شدم بفرمایید. night11 10 اسفند 1386, 21:42با این هم می تونید کل برنامه رو ببندید . Application.ExitThread() Milo 11 اسفند 1386, 01:31ممنون ولی این کد هایی که شما نوشتید که داخل پروپرتی ها یا متد های فرم نیست ؟ :-/ آخه ببینید من دو تا windows form دارم حالا می خوام اول frmMain ام نمایش داده بشه بعد بازدن یک دکمه ای به فرم دوم برم یعنی frmSecond ام . حالا برای رویداد کلیک روی دکمه فلان روی فرم 1 ام نوشتم : private void btnSearch_Click(object sender, EventArgs e) { Form1 y = new Form1(); Form2 u = new Form2(); y.Hide(); u.Show(); } و برای دکمه بازگشت روی دوم ام هم عین همین کد رو قرار دادم یعنی این : private void btnBack_Click(object sender, EventArgs e) { Form1 t = new Form1(); Form2 r = new Form2(); r.Hide(); t.Show(); } حالا سواله من اینه : ببینید وقتی که فرم 1 و یا فرم 2 hide می شه برنامه خاتمه پیدا نمی کنه !!! بعدم یک مشکل بوجود میاد اونم اینه که اصلا فرم 1 رو پنهان نمی کنه و با زدن دکمه بازگشت دوبارهیک فرم دیگه نمایش داده می شه :neutral: من چه کاری باید انجام بدم که این طوری نشه ؟ :sad: ممنون از راهنمایی ها تون . saalek110 11 اسفند 1386, 05:08شما اگر فایل Program.cs را باز کنید داریم: using System; using System.Collections.Generic; using System.Windows.Forms; namespace two_form_examing { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(fals e); Application.Run(new Form1()); } } } در اینجا می بینید که فرم 1 به طور اتوماتیک شروع می شود. پس در دکمه ای که روی فرم 1 گذاشتید نیازی به نمونه سازی از فرم 1 نیست. و ثانیا وقتی شما دارید فرم 1 را می بینید یعنی فرم 1 قبلا خلق شده پس در دو قسمت کدی که شما گذاشتید در قسمت اول کدهایتان این کدها: Form1 y = new Form1(); y.Hide(); زائد است. اگر می خواهید فرم 1 را مخفی کنید بنویسید: this.Hide(); کلمه this یعنی همان فرمی که داخلش هستیم. در وی بی دات نت فکر کنم کلمه me به کار می رود به جای آن. با این کد فرم 1 مخفی میشه. برای خروج از حالت run از منوی دیباگ stop را بزنید. حالا می رسیم به بحث فرم 2 : فرم 2 خلق نشده. پس اول باید نمونه ای از آن بسازیم. البته باید قبلا هم فرمی به پروژه افزوده باشید. //this.Hide(); Form2 u = new Form2(); u.Show(); با کد بالا که مثلا در رویداد کلیک یک باتون است شما باعث نمایش فرم 2 می شوید. حالا کد زیر را امتحان کنید: //this.Hide(); Form2 u = new Form2(); Form2 u2 = new Form2(); u2.Show(); u.Show(); با زدن باتون حاوی کد بالا دو فرم علاوه بر فرم 1 به نمایش در می آید. این دو فرم نمونه هایی از قالب فرم 2 است. مثلا روی فرم 2 قبل اجرا دو تکست باکس بیافزایید که با اجرای کد بالا دو فرم دارید که روی هر یک دو تکست باکس وجود دارد. توجه داشته باشید که با بستن فرم 1 ما باعث می شویم هر 3 فرم بسته شود و کلا برنامه از حالت اجرا خارج شود. چون شخصیت برنامه ما در Program.cs وابسته به فرم 1 است. اگر می خواهید این دیکتاتوری فرم 1 خاتمه یابد باید Program.cs را دستکاری کنید. البته شاید جای نگرانی نباشد چون می توانیم فرم 1 را مخفی کنیم و برنامه همچنان در حالت اجرا باقی بماند. حالا کد را ساده می کنیم. همان طور که شما می خواهید . یعنی: this.Hide(); Form2 u = new Form2(); u.Show(); با اجرای کد بالا قسمت اول مقصود شما برآورده می شود یعنی فرم 1 مخفی شده و فرم 2 آشکار می شود. =========================== حالا می رویم فاز دو : یعنی مخفی کردن فرم 2 و دوباره آشکار کردن فرم 1 . دکمه ای روی فرم 2 بیافزایید با کد زیر: this.Hide(); //Form1.??? خط اول که یعنی فرمی که داخلشیم را مخفی کن. اما اینجا فرم 1 شناخته شده نیست. و من نتوانستم آنرا به این طریق show کنم. =============================== من نمی دانم راه صحیح چیست ولی کد زیر: Form1 t = new Form1(); t.Show(); را هم مناسب نمی دانم. البته در فاز دو کد زیر: this.Hide(); //Form1.??? Form1 t = new Form1(); t.Show(); ظاهرا باعث رسیدن به مقصود است. و شما به آنچه می خواستید رسیده اید. ولی من نگران اینم که تجمعی از فرومها ایجاد شود زیرا ما داریم مرتبا نمونه می سازیم و مخفی می کنیم. در کد بالا شاید به جای this.Hide استفاده از close بهتر باشد. =============================== در فرم 1 دو دکمه اضافه کنید با کدهای زیر: private void button1_Click(object sender, EventArgs e) { Form2 u = new Form2(); u.Show(); this.Hide(); } private void button2_Click(object sender, EventArgs e) { this.Close(); } بار اول اگر دکمه دوم را بزنیم برنامه خاتمه می یابد ولی بعد یک پاسکاری با فرم 2 با زدن دکمه دوم برنامه خاتمه نمی یابد. یعنی ما داریم تکثیر فرم می کنیم. ====================== این توضیحات باشه تا بعد. Milo 11 اسفند 1386, 15:40در فرم 1 دو دکمه اضافه کنید با کدهای زیر: private void button1_Click(object sender, EventArgs e) { Form2 u = new Form2(); u.Show(); this.Hide(); } private void button2_Click(object sender, EventArgs e) { this.Close(); } بار اول اگر دکمه دوم را بزنیم برنامه خاتمه می یابد ولی بعد یک پاسکاری با فرم 2 با زدن دکمه دوم برنامه خاتمه نمی یابد. یعنی ما داریم تکثیر فرم می کنیم. ====================== این توضیحات باشه تا بعد. ممنون خیلی عالی و تفهیمی توضیح دادید . منم دقیقا همین مشکل رو دارم . برنامه خاتمه پیدا نمی کنه !؟ و دلیلش هم اینه که داریم به طور مداوم از روی نمونه فرم 1 یکی می سازیم . بازم ممنون به خاطر پاسخ خوبتون . من منتظر بقیه جواب شما می مونم . مرسی . :wink: saalek110 11 اسفند 1386, 16:29یک پست به عنوان راه حلی برای یک سری برنامه ها: پروژه ای بسازید. یک فرم دیگر اضافه کنید. ( من این کار را از پنجره Solution Explorer با کلیک راست بر روی نام پروژه ( نه نام سولوشن - در 2005 سولوشن آیکون چند رنگی دارد ولی پروژه آیکون سبز رنگی دارد) و انتخاب Add و بعد New Item... و بعد در پنجره باز شده دومی که Windows Form است انجام می دهم. ) حالا در رویداد کلیک یک باتون که به فرم 1 می افزایید کد زیر را قرار دهید: Form2 u = new Form2(); u.ShowDialog(); کد بالا باعث می شود که فرم 2 به شکل مودال (اجباری) باز شود. یعنی تا فرم رویی بسته نشود دسترسی به فرم 1 غیر ممکن است. ======================= چرا من این کد را نوشتم؟ گفتیم که فرم 1 به خاطر کدهای فایل Program.cs حالت شاه شطرنج را دارد. یعنی اگر او نابود شود هر تعداد فرمی هم که باز باشد فایده ای ندارد و برنامه خاتمه می یابد. پس من آمدم با باز کردن modal دیگر فرمها این شاه را حفظ کردم. شاید این هم برای برنامه هایی یک راه حل باشد. در این برنامه فرم 1 مخفی نشده بلکه غیر قابل دسترس شده. Milo 11 اسفند 1386, 17:05ممنون واقعا کمک کردید مرسی . saalek110 11 اسفند 1386, 17:09اما به عنوان راه حلی برای مسئله شما. من یک پروژه ساختم به نام one_king_and_two_rook یعنی یک شاه و دو قلعه. طرز ساخت: یک پروژه با 3 فرم ایجاد کنید. یعنی یک پروژه بسازید و فرم 2 و فرم 3 را بیافزایید. فرم base میشه king و دو فرم بعدی میشوند rook . در رویداد Form1_Activated از فرم 1 کد زیر را قرار دهید: Form2 frm2 = new Form2(); frm2.Show(); this.Hide(); با کد بالا شاه یعنی فرم 1 به محض ورود به عرصه خود را hide می کند و بازی را به فرم 2 می سپارد. حالا نوبت فرم 2 است که در حکم قلعه اول بازی را با قلعه دوم یعنی فرم 3 شروع کند. در رویداد کلیک باتونی که به فرم 2 می افزایید کد زیر را بیافزایید: Form3 frm3 = new Form3(); frm3.Show(); this.close(); توجه کنید که Close می کنیم نه Hide . فرض من که فعلا مطمئن نیستم این است که با Close حافظه آزاد می شود. اگر رفتید تحقیق کردید و دیدید این رویداد یعنی Close مناسب نیست رویداد دیگری را جایگزین کنید. حالا بازی میرسه به قلعه دومی یعنی همان فرم 3 . باتونی اضافه کنید با کد زیر: Form2 frm2 = new Form2(); frm2.Show(); this.Close(); درست شد. پینگ پونگ فرمی بین فرم 2 و فرم 3 ساخته شد. ولی من تست نکردم که با Close حافظه ها آزاد می شود یا نه. در برنامه بالا با بستن فرم 2 یا فرم 3 برنامه خاتمه نمی یابد چون فرم 1 همچنان مخفی است. برای بستن آن می توانید در رویداد بسته شدن فرمهای 2 و 3 کد اختتام برنامه یعنی : Application.Exit(); را بیافزایید. Milo 11 اسفند 1386, 17:34ممنون ولی این راه حلی که شما نوشتید در حقیقت طوریه که من در فرم 2 یا 3 یعنی فرمهای فرعی برنامه می تونم برنامه رو خاتمه بدم نه در فرم اصلی !!! درسته ؟ شما نوشتید در فرم 2 یا 3 کد اختتام رو بنویسم !؟ میشه داخل فرم 1 این کار رو بکنم ؟ یعنی بیام و یک دکمه برای خروج بگذارم و اونجا ( زمانی که یک نمونه از فرم 1 دوباره show شد ) این کدی که شما نوشتید رو قرار بدم : Application.Exit(); Milo 11 اسفند 1386, 18:02من این کاری رو که گفتید انجام دادم . مرسی . خیلی خیلی ممنونم . saalek110 11 اسفند 1386, 19:15من با مخفی کردن فرم 1 در برنامه کلا اونو از بازی خارج کردم تا بتونم فرم های 2 و 3 را Close کنم. چون نمیشد فرم 1 را Close کرد. یعنی نقش فرم 1 را به فرم 2 دادم. تا از دردسر بسته شدن برنامه خلاص بشوم. شما می توانید از فرم 1 هیچ استفاده ای نکنید یا بعضی استفاده ها را بکنید. برای اختتام برنامه هم از اون کد Application.Exit(); در جاهای مناسب در فرم 2 و فرم 3 استفاده کنید. مثلا وقتی کاربر با زدن ضربدر گوشه فرمهای 2 و 3 آنها را می بندد رویدادش را پیدا کنید و این کد را درش قرار دهید. یا دکمه ای با کپشن Exit بسازید روی فرمهای مناسب و کد مذکور را در آن قرار دهید. saalek110 11 اسفند 1386, 23:44از کد زیر برای یافتن تعداد فرمهای باز استفاده کنید: textBox1.Text = Application.OpenForms.Count.ToString(); alimz64 30 تير 1389, 08:35در سی شارپ اگر نام استان را وارد کنیم نام شهر را نشان با استفاده از اس کیو ال سرور دهد alimz64 30 تير 1389, 08:36در سی شارپ اگر نام استان را وارد کنیم نام شهر را با استفاده از اس کیو ال سرور نشان دهد alimz64 30 تير 1389, 08:36در سی شارپ اگر نام استان را وارد کنیم نام شهر را با استفاده از اس کیو ال سرور نشان دهد




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 8309]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن