PDA

View Full Version : دسترسی دو فرم در حال اجرا به همدیگه



combo_ci
دوشنبه 02 مهر 1386, 15:04 عصر
من یه برنامه دارم که روی فرم اصلی فرم دوم رو show کردم ....حالا میخوام وقتی کاربر فرم دوم رو بست فرم اول تغییر سایز بده .....
یا فرم اول بتونه وقتی فرم دوم show شده و در حال نمایش هست مثلا text فرم دوم رو عوض کنه...
در واقع من میخوام بدونم از یه فرم وقتی تو در حال نمایش هست چطوری میشه به یه فرو دیگه که در حال نمایش هست چیزی فرستاد یه از اعمالی که در اون فرم انجام میشه اطلاع پیدا کرد

PC2st
دوشنبه 02 مهر 1386, 15:55 عصر
برای اینکه چیزی به فرم دیگر بفرستید، از متد استفاده کنید و برای اینکه از یک سری اعمال در فرم دیگر با خبر بشید، از رویداد (Events) استفاده کنید. یعنی باید در اون فرم، یکسری متد و رویداد تعریف کنید. مثلا:


public class MyForm : Form
{
public void DoIt(string msg)
{
this.Text = msg;
}
}

و در فرمی که میخواید چیزی به فرم قبلی (فرم MyForm در کد بالا) ارسال کنید:


MyForm frm = new MyForm();
frm.DoIt("HELLO");

combo_ci
دوشنبه 02 مهر 1386, 18:50 عصر
سلام
منظور من یه چیز دیگه بود ..........ببینید فرض کنید که پروژه من 2 تا فرم داره ....وقتی رو فرم اول کلیک میکنم

private void button1_Click(object sender, EventArgs e)
{
this.DesktopLocation = new Point(DesktopLocation.X - 200, DesktopLocation.Y);

new Form2(this.DesktopLocation.X + this.Width, this.DesktopLocation.Y).Show();
}

از فرم دوم کنار فرم اول در حالت show() نشون داده میشه ......حالا چون فرم show شده (و showdialog نشده )نمیشه فهمید که این فرم کی بسته میشه....میخواستم ببینم که میشه فهمید که این فرم کی بسته شده (close شده)

یا میشه وقتی فرم دوم نشون داده شده و کنار فرم اول هست (نه موقع صدا زدن فرم) یه پارامتری رو بهش پاس داد؟

PC2st
دوشنبه 02 مهر 1386, 20:02 عصر
حالا چون فرم show شده (و showdialog نشده )نمیشه فهمید که این فرم کی بسته میشه....
یک رویداد ایجاد کنید و ازش استفاده کنید، چون چنین رویدادی در کلاس Form وجود داره، پس نیازی نیست که چنین رویدادی رو بوجود بیاریم و از همین رویداد FormClosing استفاده میکنیم. مثلا در Form1 بنویسید:


private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
frm2.Show();
}
void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
//anything you want to do here...
Console.Beep();
}

فکر کنم کدها نیازی به توضیح نداشته باشه...


یا میشه وقتی فرم دوم نشون داده شده و کنار فرم اول هست (نه موقع صدا زدن فرم) یه پارامتری رو بهش پاس داد؟
آره میشه :-) باید به شیئ فرم دوم دسترسی داشته باشی. مثلا بعد از اینکه فرم رو نمایش دادید ;"frm2.Text = "Goood

combo_ci
دوشنبه 02 مهر 1386, 21:59 عصر
آقا ممنون درست شد
ایول بابا آخرشی :-*