سلام دوستان من می خواستم برای یه فرم توی برنامم یه مقدار بازگشتی بزارم ( مثل تابع ) که وقتی فرم بسته شد یه مقداری رو به فرم که درون اون باز شده برگردونه ممنون میشم راهنماییم کنید
سلام دوستان من می خواستم برای یه فرم توی برنامم یه مقدار بازگشتی بزارم ( مثل تابع ) که وقتی فرم بسته شد یه مقداری رو به فرم که درون اون باز شده برگردونه ممنون میشم راهنماییم کنید
عزیز مثال بزن
می خوام وقتی توی فرم 1 فرم دو رو show می کنم بعد از بسته شدن فرم 2 یه مقدار به فرم 1 ارسال بشه
در فرم والد رویداد فرم فرزند رو نمونه سازی می کنی :
public partial class Parent : Form
{
ChildForm childForm = null;
public Parent()
{
InitializeComponent();
childForm = new ChildForm();
childForm.SomeEvent += new SomeEventHandler(childForm_SomeEvent);
textBox1.Text = "";
}
void childForm_SomeEvent(object sender, EventArgs e)
{
textBox1.Text = "Child Form Closed";
}
private void button1_Click(object sender, EventArgs e)
{
childForm.Show();
}
}
بعد می آیی در فرم فرزند در رویداد closeاون نمونه ای رو که در والد ایجاد کردی فعال می کنی :
public delegate void SomeEventHandler(object sender, EventArgs e);
public partial class ChildForm : Form
{
//event is defined here
public event SomeEventHandler SomeEvent;
public ChildForm()
{
InitializeComponent();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
SomeEvent(sender, e);
}
}
و راهی کم هزینه تر با Property:
//In Form1's button handler
using(Form2 form2 = new Form2())
{
if(form2.ShowDialog() == DialogResult.OK)
{
someControlOnForm1.Text = form2.TheValue;
}
}
And...
//In Form2
//Create a public property to serve the value
public string TheValue
{
get { return someTextBoxOnForm2.Text; }
}
الزاماً نه اما می تونه باشه.
کار نمی کنه!!!!!!!!!!!!
WindowsFormsApplication1.zip
خطا نمیده ولی مقدار رو هم ارسال نمی کنه
گذاشتم می تونی ببینی
سلام.
یه راهش اینه :
در partial مربوط به فرم 2 که قراره مقدار رو برای فرم 1 بفرسته یک متغیر استاتیک تعریف کن :
public static string flag;
در رویداد Form Closing مربوط به همین فرم 2 کد زیر رو قرار بدید (مقداری رو که دوست دارید برگشت بدید داخل متغیر flag قرار بدید. البته اجباری ندارید که حتما از رویداد form closing استفاده کنید. میتونید هر جا که دوس داشتید این متغیر رو مقدار دهی کنید.) :
flag = "this is a test";
در فرم 1 که فرم والد شماست هم فرم2 رو بصورت زیر صدا بزنید :
Form2 f2 = new Form2();
f2.ShowDialog();
//
MessageBox.Show(Form2.flag);
موفق باشید.
بفرما
این هم برعکس ، اونی که برعکس اینه