PDA

View Full Version : حرفه ای: اجرای تابع mdiparent از فرمی دیگر



hashtgerd2
یک شنبه 20 بهمن 1392, 21:14 عصر
تو mdiparent یه تکس باکس داریم و با یه تابع (که در خود فرم mdioparent تعریف شده ) متن تکس باکس رو تغییر میدیم . حالا می خوایم اگه فرمی باز کردیم و بعدش که وقتی فرم رو بستیم اون تابع تو mdiparent اجرا بشه. موقع بسته شدن فرم یک شی از mdiparent ساختم بعد تابع رو صدا زدم ولی تا وقتی اون شی show() نشه اون تابع اجرا نمیشه. نمونه ساده شو ضمیمه کردم فرم new رو اجرا کنید مشخصه

Mahmoud.Afrad
یک شنبه 20 بهمن 1392, 21:29 عصر
مگر mdiparent رو نداری. از طریق اون متد رو فراخوانی کن.

MDIParent1 m = this.MdiParent as MDIParent1;
this.Close();
m.update();

khokhan
یک شنبه 20 بهمن 1392, 21:34 عصر
تو mdiparent یه تکس باکس داریم و با یه تابع (که در خود فرم mdioparent تعریف شده ) متن تکس باکس رو تغییر میدیم . حالا می خوایم اگه فرمی باز کردیم و بعدش که وقتی فرم رو بستیم اون تابع تو mdiparent اجرا بشه. موقع بسته شدن فرم یک شی از mdiparent ساختم بعد تابع رو صدا زدم ولی تا وقتی اون شی show() نشه اون تابع اجرا نمیشه. نمونه ساده شو ضمیمه کردم فرم new رو اجرا کنید مشخصه

والبته اینطوری هم می شه :


private void ShowNewForm(object sender, EventArgs e)
{
//Form1 childForm = new Form1();
//childForm.MdiParent = this;
//childForm.Text = "Window " + childFormNumber++;
//childForm.Show();
Form1 f = new Form1();
f.MdiParent = this;
f.Text = "Window " + childFormNumber++;
f.WindowState = FormWindowState.Normal;
f.Show();
f.FormClosed += Child_FormClosed;



}
private void Child_FormClosed(object sender, FormClosedEventArgs e)
{

update();

}

hashtgerd2
یک شنبه 20 بهمن 1392, 21:42 عصر
مگر mdiparent رو نداری. از طریق اون متد رو فراخوانی کن.

MDIParent1 m = this.MdiParent as MDIParent1;
this.Close();
m.update();


این کار کرد ایول

hashtgerd2
یک شنبه 20 بهمن 1392, 21:48 عصر
والبته اینطوری هم می شه :


private void ShowNewForm(object sender, EventArgs e)
{
//Form1 childForm = new Form1();
//childForm.MdiParent = this;
//childForm.Text = "Window " + childFormNumber++;
//childForm.Show();
Form1 f = new Form1();
f.MdiParent = this;
f.Text = "Window " + childFormNumber++;
f.WindowState = FormWindowState.Normal;
f.Show();
f.FormClosed += Child_FormClosed;



}
private void Child_FormClosed(object sender, FormClosedEventArgs e)
{

update();

}

ایول اینم کار کرد. این خط رو تاحالا ندیده بودم f.FormClosed += Child_FormClosed; یعنی هم ایونت فرم چیلد اجرا شه هم یه تابع