PDA

View Full Version : برگشتن به فرم قبلی؟؟



saymon
پنج شنبه 09 مهر 1388, 15:07 عصر
سلام. من می خوام وقتی از form1به form2میرم فرم اولی رو محو کنم ووقتی form2رو می بندم form1دوباره ظاهر بشه.من اولی رو this.Visible = falseاین جوری کردم اما نمی دونم می شه از دومی به اولی رفت یا نه(میدونم باید objectگرفت مشکلم اینه که این جوری همه چیز form1از اول شروع میشه) من یه تایمر توی form1دارم که می خوام دائما کار کنه ووقتی form2بسته می شه وform1نشون داده میشه اون تایمر همچنان به کارش ادامه بده.
لطفا منو راهنمایی کنید که چطور چنین کاری با تایمرم بکنم.

sara.f
پنج شنبه 09 مهر 1388, 15:21 عصر
سلام. من می خوام وقتی از form1به form2میرم فرم اولی رو محو کنم ووقتی form2رو می بندم form1دوباره ظاهر بشه.من اولی رو this.Visible = falseاین جوری کردم اما نمی دونم می شه از دومی به اولی رفت یا نه(میدونم باید objectگرفت مشکلم اینه که این جوری همه چیز form1از اول شروع میشه) من یه تایمر توی form1دارم که می خوام دائما کار کنه ووقتی form2بسته می شه وform1نشون داده میشه اون تایمر همچنان به کارش ادامه بده.
لطفا منو راهنمایی کنید که چطور چنین کاری با تایمرم بکنم.
سلام

private void Form1_Load(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}

saymon
پنج شنبه 09 مهر 1388, 20:24 عصر
سلام

private void Form1_Load(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}

من می خوام وقتی فرم 2بسته میشه وفرم 1 میاد تایمر من (که توی فرم 1بوده) به کار خودش ادامه بده (کل زمان حضور در برناممو بگه).این چیزی که شما نوشتید new میگیره...ضمن اینکه کاربردشم با اونی که من می خوام فرق می کنه .میشه یکم بیشتر توضیح بدید.:گریه::عصبانی++:

nasser_ray
پنج شنبه 09 مهر 1388, 21:12 عصر
سلام
اگه سوالتون رو خوب متوجه شده باشم شما دو تا فرم دارد که فرم اول همون فرم اصلی شماست و می خواهید موقعی که فرم دوم نمایش داده می شه دیگه نمایش داده نشه و لی تمام رویداد ها (خصوصلا رویداد تایمر) اجرا بشه و به محض بستن فرم دو دوباره این فرم ظاهر بشه !!!؟
اگه درست متوجه شده باشم کد زیر به شما کمک می کنه (من دوتا فرم با اسم های Form1 و Form2 و یه کلید به اسم button1 در فرم اول برای رفتن به فرم دو دارم)
رویداد Click برای کلید button1


private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Show();
frm.Tag = this;
this.Opacity = 0;
this.ShowInTaskbar = false;
}

با این کار فرم دو نمایش داده می شه و بعد فرم یک ناپدید می شه
بعد در رویداد close فرم دوم کد زیر رو بنویسید


private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 frm = (Form1)this.Tag;
frm.Opacity = 1;
frm.ShowInTaskbar = true;
}

mahdi_7610
پنج شنبه 09 مهر 1388, 21:43 عصر
یه مقاله بود که هر چی گشتم پیداش نکردم که بهتون بدم .

Reza_Yarahmadi
جمعه 10 مهر 1388, 21:21 عصر
واسه دسترسی به فرمی که Hide شده ولی هنوز توی حافظه است (بسته نشده) میتونی از خاصیت OpenForms از کلاس Application استفاده کنی.
توی مثال شما واسه برگشت به فرم 1 میتونی از کد زیر استفاده کنی:

Application.OpenForms["Form1"].Show();

naeeme
شنبه 11 مهر 1388, 12:26 عصر
کدهایی که دوستان دیگه گذاشتن یه ایراد داره، اصول oop رو زیرپا گذاشته. این کد این ایراد رو نداره




public partial class frmFirst : Form
{
public frmFirst()
{
InitializeComponent();
}

private Form _frmSecond;
protected Form frmSecond {
get {

if (_frmSecond == null)
{
_frmSecond = new Form2();
_frmSecond.FormClosed += new FormClosedEventHandler(_frmSecond_FormClosed);
}
return _frmSecond;
}

}

void _frmSecond_FormClosed(object sender, FormClosedEventArgs e)
{
this.Opacity = 1;
this.ShowInTaskbar = true;

}

private void button1_Click(object sender, EventArgs e)
{
this.frmSecond.Show();
this.Opacity = 0;
this.ShowInTaskbar = false;
}
}



در این کد، من یک property تعریف کردم که یک شی از فرم دوم هست. برای رخداد formclosed هم یک متد تعریف کردم که فرم اول رو نمایش میده