PDA

View Full Version : عدم نمایش فرم



mahan.2002
شنبه 22 بهمن 1390, 01:46 صبح
با سلام
زمانی که میخوام در فرم یکم فرم سوم یا دوم رو نمایش بدم اصلان پارامتر های مربوط رو نمایش نمیده مثلا تابع Show تشخیص نمیده...

saeed0935
شنبه 22 بهمن 1390, 02:20 صبح
دوست عزیز اینو امتحان کنform3 tt=new form3();
tt.showdialog();

ya30ien2
شنبه 22 بهمن 1390, 07:08 صبح
بخاطر این هستش که شما اول باید مینوشتید
form2 fr2=new form2();
و بعد نمایش میدادید
fr2.show();

mahan.2002
شنبه 22 بهمن 1390, 07:19 صبح
مرسی..
یه سوال
مگه ما وقتی این ایتم رو ایجاد میکنیم خود VS یک نام پیش فرض بهش نمیده . چرا پس بعدا اینکه ایتم ایجاد میکنیم دوباره باید این دستور رو بنویسیم..

Mahmoud Zaad
شنبه 22 بهمن 1390, 09:04 صبح
مرسی..
یه سوال
مگه ما وقتی این ایتم رو ایجاد میکنیم خود VS یک نام پیش فرض بهش نمیده . چرا پس بعدا اینکه ایتم ایجاد میکنیم دوباره باید این دستور رو بنویسیم..
سلام
دوست عزیز در سی شارپ و کلاً زبان های شی گرا، با اشیا سر و کار داریم. برای کار با اشیا هم باید ابتدا یه نمونه ازشون بسازیم.

mahan.2002
شنبه 22 بهمن 1390, 09:30 صبح
سلام
دوست عزیز در سی شارپ و کلاً زبان های شی گرا، با اشیا سر و کار داریم. برای کار با اشیا هم باید ابتدا یه نمونه ازشون بسازیم.

خب درست . ولی زمانی که یک شی ایجاد میکنیم..مثل فرم که New item میکنیم. همون موقع یک نام برای اون در نظر میگیرد مثل From2 خب دیگه چه نیازی داره که دوباره بیاییم نام تعریف کنیم. مگر همان موقع در هنگام ایجاد فرم یک شی ساخته نمیشه!؟ . دیگه چه نیازیه دوباره بخوایم اونو تعریف کنیم.

البته من منظورتون رو از ساخت نمونه متوجه نشدم. یعنی اگر منظورتون اینکه بعد از ساخت یک شی باید یک نمونه از اون ساخت .در کل چه نیازی هست برای این کار؟

Mahmoud Zaad
شنبه 22 بهمن 1390, 09:59 صبح
درسته همون موقع یه نام برای اون در نظر گرفته میشه ولی این فایل ها فقط ساخته شده اند. فرض کنید یه انبار داریم که جنس های مختلف توش هست(که قاعدتا اسم هم دارن) ما اگه بخوایم از اینها استفاده کنیم باید از انبار بکشیمشون بیرون. اینجا هم همین حالته. شما می تونید صد تا فرم به همون روشی که گفتید به پروژه اضافه کنید ولی تا زمانیکه یه نمونه ازشون نسازید(از انبار نیاریدشون بیرون) نمی تونید ازشون استفاده کنید. در این حالت در واقع شما شروع به استفاده از فرم (یا منابع حافظه) می کنید و بعد از اینکه کارتون تموم شد هم منابع حافظه رو پاک می کنید ولی اگه طوری بود که فرم همیشه فعال بود(چیزی که شما می خواید) خب همیشه منابع حافظه حتی بدون اینکه ازش استفاده بشه، اشغال میشدن.
منظورم از ساخت نمونه همون خطی هست که شما فراموش کرده بودید بنویسید.
برای اطلاعات بیشتر و کاملتر در این موارد هم می تونید به مباحثی که در مورد "چرایی شی گرایی" پرداخته شده ، مراجعه کنید.

shadi khanum
شنبه 22 بهمن 1390, 11:01 صبح
ببین دوست عزیز موقعی که شما AddNewItem میکنی یک کلاس از جنس form به برنامت اضافه میشه.. این کلاس واسه خودش الان موجودیتی ندارهو در واقع صرفا یه قالب نه چیز دیگه.. مثلا شما اگه یه قالب کیک داشته باش که نمیتونی ادعا کنی من کیک دارم و میخوام تابع خوردن رو روی اون اجرا کنم که!اول باید یه نمونه یا شی از اون قالب رو بسازی و بعد تابع خوردن رو روی اون شی اعمال کنی.. اینجا هم دقیقا همنه، یعنی این فرمی که Add میکنی یه قالب و برای استفاده از توابعش مثل show باید اول یه نمونه از اون بسازی و این دستور form2 fr2=new form2(); یعنی یه نمونه از قالب یا کلاس form2 بساز (که به این نمونه میگن شی)و اسمش رو بذار fr2. حالا میتونی تابع show رو برای اون شی اجرا کنی و ...
موفق باشی

mahan.2002
شنبه 22 بهمن 1390, 12:25 عصر
یک سوال درمورد بستن یک فرم در فرم دیگه چطور باید عمل کرد..

vahdani_d
شنبه 22 بهمن 1390, 12:51 عصر
یک سوال دارم من از این دستورات برای فعال شدن و غیر فعال شدن فرمهای 2 و 3 برنامه ام استفاده میکنم اما میخوام فرم 2 فعاله فرم 3 بسته بشه و برعکس اما با این دستورات فرم ها بسته نمیشن لطفا راهنمایی کنید


form2 log = new form2();
log.Show();
form3 ser = new form3();
ser.Hide();

saeed0935
شنبه 22 بهمن 1390, 12:55 عصر
یک سوال دارم من از این دستورات برای فعال شدن و غیر فعال شدن فرمهای 2 و 3 برنامه ام استفاده میکنم اما میخوام فرم 2 فعاله فرم 3 بسته بشه و برعکس اما با این دستورات فرم ها بسته نمیشن لطفا راهنمایی کنید


form2 log = new form2();
log.Show();
form3 ser = new form3();
ser.Hide();

این رو امتحان کن.this.hide()
form2 log = new form2();
log.Show();

m2_farzan
شنبه 22 بهمن 1390, 12:57 عصر
یک سوال درمورد بستن یک فرم در فرم دیگه چطور باید عمل کرد..

فرم رو به صورت آرگومان به سازنده ی فرم دوم می فرستید و اون رو با متد سازنده سازنده در یک متغیر public میگذارید و بعدا هر وقت خواستید از متد close اون شی استفاده می کنید.

vahdani_d
شنبه 22 بهمن 1390, 13:04 عصر
این رو امتحان کن.this.hide()
form2 log = new form2();
log.Show();

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

mahan.2002
شنبه 22 بهمن 1390, 13:19 عصر
میشه توضیح بدید چطوری ..

Mahmoud Zaad
شنبه 22 بهمن 1390, 13:22 عصر
اول چک می کنیم ببینم فرم (مثلا فرم 3) باز هست بعد می بندیمش، به این صورت:


if(Application.OpenForms["Form3"] !=null)
Application.OpenForms["Form3"].Close();