PDA

View Full Version : اشکال این خط چیست؟ Form1 ff = Application.OpenForms["form1"];



mrsalam
دوشنبه 05 مرداد 1388, 13:55 عصر
با سلام
من می خواهم از طریق فرم های دیگر به یک فرم باز اطلاعات بفرستم:
Form1 ff = Application.OpenForms["form1"];
ff.Controls["text1"].Text=textBox1.Text;

Reza_Yarahmadi
دوشنبه 05 مرداد 1388, 15:41 عصر
خروجی دستور

Application.OpenForms["form1"]
از نوع Form است و شما به یک شئ از نوع Form1 نسبت دادید فقط کافیه بصورت زیر بنویسید

Form ff = Application.OpenForms["form1"];

hozouri
دوشنبه 05 مرداد 1388, 16:02 عصر
دوست عزیز من این رو تست کردم برای این نبود منم فکر می کردم به خاطر اونه اگر یه تست کنی متوجه میشه .

موقع انتساب این error رو میده ...


Object reference not set to an instance of an object.

mrsalam
دوشنبه 05 مرداد 1388, 16:08 عصر
متشکرم دوستان ولی چکار کنم؟ راه حلی نداره؟
دقیقا همین ارور رو میده :عصبانی++:

mrsalam
دوشنبه 05 مرداد 1388, 16:17 عصر
:لبخندساده: یافتم
دوستان تو این سایت به جواب رسیدم
http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=58408
اینجا هم مینویسم تا بقیه استفاده کنن:

Form1 ff =(Form1) Application.OpenForms["form1"];

ff.Controls["textBox1"].Text = textBox1.Text;

alireza_tavakol
دوشنبه 05 مرداد 1388, 16:57 عصر
دوست عزیز من این رو تست کردم برای این نبود منم فکر می کردم به خاطر اونه اگر یه تست کنی متوجه میشه .

موقع انتساب این error رو میده ...


Object reference not set to an instance of an object.


به من که Error نمیده

Reza_Yarahmadi
دوشنبه 05 مرداد 1388, 20:00 عصر
دوست عزیز من این رو تست کردم برای این نبود منم فکر می کردم به خاطر اونه اگر یه تست کنی متوجه میشه .

موقع انتساب این error رو میده ...


Object reference not set to an instance of an object.

این خطا به این دلیله که فرمی که توی OpenForms تعیین کردید توی حافضه وجود نداره. یا هنوز باز نشده یا بعد از باز شدن کلا بسته شده. شاید هم اسم کلاس فرم مورد نظرتون رو درست تایپ نکردید!!

Unknownlive
دوشنبه 05 مرداد 1388, 20:08 عصر
این اصلا چه روشیه برو به شی مورد نظر در پنل راست قسمت خصوصیات و Modifiers ان را Public کن بعد در هرجا خاصی از فرمی که شئ در اونه یک نمونه ساده بساز و به صورت زیر کار کن
Form2 f=new form2()
f.textbox2.text=mydata

meysam_pro
دوشنبه 05 مرداد 1388, 20:39 عصر
دوستان عزیز، هیچ دقت کردید که این روشها که گفتید"پایه ای ترین اصول OO" رو نقض میکنه؟
واسه این ، میتونی از طریق یک Custom Event این کار رو بکنید. به مثال ضمیمه شده (از رو کتاب Apress)رجوع بکنید.

mrsalam
سه شنبه 06 مرداد 1388, 09:08 صبح
شما مثل اینکه هدف من رو از این کار متوجه نشدید:افسرده:
من خواستم که وقتی فرم جاری بسته بشه،بعضی از اطلاعاتش رو به فرمی که هنوز باز هست بفرستم
اگر طبق فرمایش Unknownlive عزیز این کار رو بکنم که در واقع به یک آبجکت جدید مقدار دادیم و در فرمی که قبلا باز شده،هیچ تغییری اعمال نمی شود

meysam_pro
سه شنبه 06 مرداد 1388, 12:13 عصر
شما مثل اینکه هدف من رو از این کار متوجه نشدید:افسرده:
من خواستم که وقتی فرم جاری بسته بشه،بعضی از اطلاعاتش رو به فرمی که هنوز باز هست بفرستم
اگر طبق فرمایش Unknownlive عزیز این کار رو بکنم که در واقع به یک آبجکت جدید مقدار دادیم و در فرمی که قبلا باز شده،هیچ تغییری اعمال نمی شود

به خاطر این مطلب پست قبلی رو نوستم.

.... Modifiers ان را Public

Unknownlive
سه شنبه 06 مرداد 1388, 12:57 عصر
والا من از همین روش استفاده می کنم و جواب می گیرم اگر هم نگران نقض اصول OO میشه می تونید Protected در نظر بگیرید

mrsalam
سه شنبه 06 مرداد 1388, 13:04 عصر
من واقعا نمی دونم چطور توضیح بدم :متعجب:
فکر می کنم بخاطر اینکه ایرانی نیستم،نمی تونم قشنگ توضیح بدم
اصلا اگر کسی بدون این روش
form1 f1= (form1) application.openforms("form1");
f1.textbox1.text="F1 Data" می تونه چیزی که می خوام رو انجام بده،لطفا سورس بذاره

Unknownlive
سه شنبه 06 مرداد 1388, 16:05 عصر
من که گفتم دسترسی چه جوری پیدا کنی و حتی اینکه OO به قول دوستمون زیر سوال نره هم جواب دادم حالا مشکلت در چیه

mrsalam
سه شنبه 06 مرداد 1388, 16:43 عصر
شما یک اینستنس جدید ایجاد کردید، و هیچ ارتباطی با فرم مورد نظر نداره!
کاش می شد از طریق آی دی هم به من کمک می کردیدی، من همیشه آنلاین هستم