PDA

View Full Version : reload کردن یک فرم از درون فرمی دیگر



bita_naz
سه شنبه 28 مهر 1394, 22:37 عصر
سلام دوستان

چطور میتونم متد load یک فرم را از درون فرمی دیگر اجرا کنم؟

البته هر دو فرم باز هستند و فرم دوم بوسیله ShowDialog باز شده است
بعبارتی میخواهم فرم اول را از درون فرم دوم refresh کنم

با تشکر:لبخندساده:

am_al_59
چهارشنبه 29 مهر 1394, 07:52 صبح
راه اول:
توی فرم 2 یک property از نوع فرم درست کرده و قبل از showdialog اونو برابر فرم 1 قرار بدین
تعریف متد load در فرم 1 رو هم از private به public تغییر بدین

private void Form1_Load(object sender, EventArgs e)


میشه اینطوری



public void Form1_Load(object sender, EventArgs e)



در آخر از طریق همون property l مثلاً اگر اسمش MainForm هست میتوانید متد load را فراخوانی کنید


MainForm.Load(null,null);

راه دوم :
در فرم1 متد showDoalog فرم 2 رو را با پارامتر this فراخوانی کنید
این پارامتر فرم 1 را در خاصیت Owner فرم 2 قرار میده و دیگر نیازی به تعریف property جدا نیست اما بازهم باید تعریف متد load رو از private به public تغییر بدین

اگر نمیخواهید تعریف متد load را تغییر دهید می توانید در فرم 1 یک متد public تعریف کرده و در بدنه آن متد که در فرم 1 هست متد load فرم را فراخوانی کنید و سپس از طریق فرم 2 متد تعریف شده را فراخوانی کنید

public void CallLoadFrom()
{
Form1_Load(null, null);
}

برای فرا خوانی در فرم 2 اگر showdialog را با پارامتر this اجرا کرده باشین دستور این میشه


Owner.CallLoadFrom();

bita_naz
چهارشنبه 29 مهر 1394, 20:08 عصر
کارهایی را که گفتید انجام دادم ولی باز هم نشد
اگر لطف کنید یک نمونه ساده بذارید ممنون میشم

am_al_59
چهارشنبه 29 مهر 1394, 20:20 عصر
این پروژه نمونه
برنامه رو اجرا کنین متد load فرم1 اجرا میشه و پیام میده
در فرم 1 یک کلید وجود داره اگر کلیک کنید روش فرم 2 باز میشه
در فرم 2 یک کلید وجود داره که با کلیک روی اون متد load فرم 1 فراخوانی میشه

ghasem110deh
چهارشنبه 29 مهر 1394, 20:23 عصر
سلام به همه ...
چه نیازی به رفرش کردن فرم دارید ؟
اگه لازمه (مثلا) بعد از درج یه سری داده توی فرم دوم (show dialog) ... اطلاعاتی که تو فرم اول نمایش داده میشه رفرش بده ، این روش شدیدا جواب میده :


Frm_Invoice fi = (Frm_Invoice)Application.OpenForms["Frm_Invoice"];
fi.DGV_Fill();
fi.DGV_Invoice.Update();
fi.DGV_Invoice.Refresh();
fi.Count_Invoice();


DGV_Fill : متودی که دیتاگریدویو رو پر میکنه
DGV_Invoice : دیتاگریدویو
Count_Invoice : یه متود دیگه

که هر سه شون باید public باشن !

mohammad-zarei
یک شنبه 30 آبان 1395, 14:16 عصر
سلام به همه ...
چه نیازی به رفرش کردن فرم دارید ؟
اگه لازمه (مثلا) بعد از درج یه سری داده توی فرم دوم (show dialog) ... اطلاعاتی که تو فرم اول نمایش داده میشه رفرش بده ، این روش شدیدا جواب میده :


Frm_Invoice fi = (Frm_Invoice)Application.OpenForms["Frm_Invoice"];
fi.DGV_Fill();
fi.DGV_Invoice.Update();
fi.DGV_Invoice.Refresh();
fi.Count_Invoice();


DGV_Fill : متودی که دیتاگریدویو رو پر میکنه
DGV_Invoice : دیتاگریدویو
Count_Invoice : یه متود دیگه

که هر سه شون باید public باشن !
ممنون از کدتون امکانش هست برای درک بهتر یه نمونه پروژه ساده بزارید که textbox فرم اول با textbox فرم دوم پر بشه؟