PDA

View Full Version : ميخوام چك كنم كه فرمم show يا hide



csharpprogramer88
سه شنبه 19 مرداد 1389, 08:09 صبح
سلام
من به اين صورت فرمم را نشان ميدم


frmdate frm = new frmdate();
frm.Show();


تعداد فرم ها زياده و به دفعات هم hide و show ميشه حالا چطوري ميتونم يك شرط بنويسم ببينم فرم show هست يا hide اگر show بود hide كنه و برعكس

ricky22
سه شنبه 19 مرداد 1389, 08:22 صبح
سلام خاصیت Visible هر فرم را بررسی کن اگر True بود Hide کن و بر عکس.

csharpprogramer88
سه شنبه 19 مرداد 1389, 09:15 صبح
به اين صورت نوشتم ولي ارور ميده


if (saat.ActiveForm.Visible = true) { saat.ActiveForm.Show(); }

ارور صادره :

ricky22
سه شنبه 19 مرداد 1389, 09:17 صبح
اینطور که مشخصه باید پس از بررسی شرط مثل پست اول خودتون یک Object را new کنید و بعد یک متدش را صدا بزنید.
Form2 frm = new Form2 ();

if (frm.Visible == false)
{
frm.Show();
}
else
{
frm.Hide();
}
}

csharpprogramer88
سه شنبه 19 مرداد 1389, 09:19 صبح
اونم فرمه مثل frmdate و فرقي با اون نداره

FastCode
سه شنبه 19 مرداد 1389, 09:24 صبح
.ActiveForm
دقیقاً اینجا چه نقشی ایفا میکنه که شما نوشتیدش؟

csharpprogramer88
سه شنبه 19 مرداد 1389, 09:27 صبح
دقیقاً اینجا چه نقشی ایفا میکنه که شما نوشتیدش؟

براي اينكه بتونم به visible دسترسي داشته باشم
دوست من سوال من طبق پست يك اينه كه چطوري بايد تشخيص بدم كه الان فرم شو هست يا هايد

FastCode
سه شنبه 19 مرداد 1389, 09:34 صبح
براي اينكه بتونم به visible دسترسي داشته باشم
دوست من سوال من طبق پست يك اينه كه چطوري بايد تشخيص بدم كه الان فرم شو هست يا هايد
این یکی واقعاً جدید بود.
http://msdn.microsoft.com/en-us/library/system.windows.forms.form_members.aspx

csharpprogramer88
سه شنبه 19 مرداد 1389, 11:44 صبح
اینطور که مشخصه باید پس از بررسی شرط مثل پست اول خودتون یک Object را new کنید و بعد یک متدش را صدا بزنید.
Form2 frm = new Form2 ();

if (frm.Visible == false)
{
frm.Show();
}
else
{
frm.Hide();
}
}


دوست عزيز من مثل دستور شما نوشتم ولي موقع اجرا يك فايل به نام vshosts.exe علاوه بر فايل هاي پروژه اضافه ميشه كه چون برنامه با تايمر كار ميكنه تعدادش خيلي زياد ميشه لطفا بفرماييد اين فايل چي هست ؟

ricky22
سه شنبه 19 مرداد 1389, 11:51 صبح
دوست عزيز من مثل دستور شما نوشتم ولي موقع اجرا يك فايل به نام vshosts.exe علاوه بر فايل هاي پروژه اضافه ميشه كه چون برنامه با تايمر كار ميكنه تعدادش خيلي زياد ميشه لطفا بفرماييد اين فايل چي هست ؟
از کدام Version VS استفاده می کنید؟
دقیقا می خواید چی کار کنید و چه کدی نوشتید؟



The vshost.exe feature was introduced with VS2005 .

The purpose of it is mostly to make debugging launch quicker - basically there's already a process with the framework running, just ready to load your application as soon as you want it to.
See this MSDN article (http://msdn.microsoft.com/en-us/library/ms242202.aspx) and this blog post (http://blogs.msdn.com/dtemp/archive/2004/08/17/215764.aspx) for more information

M.YasPro
سه شنبه 19 مرداد 1389, 11:59 صبح
سلام


foreach(Form frm in Application.OpenForms)
if(frm is frmDate)
frm.Visible=!frm.Visible;

فکر می کنم منظورتون همین بود .
موفق باشید .

csharpprogramer88
سه شنبه 19 مرداد 1389, 12:07 عصر
ورژن 2008 كد را در تايمر استفاده مي كنم چون تعداد فرم ها سه تا فرم با هر كدام به مدت 15ثانيه نمايش داده بشه ميخوام فرم جديد نمايش داده شد فرم قبلي هايد بشع

M.YasPro
سه شنبه 19 مرداد 1389, 12:31 عصر
توی متد لود فرمها اینو بنویسید :


foreach(Form frm in Application.OpenForms)
if(frm.GetType!=this.GetType())
frm.Visible=false;

اصولی نیست .

csharpprogramer88
سه شنبه 19 مرداد 1389, 12:58 عصر
دوستان خيلي گيج شدم

كد بالايي چيكار مكنه ؟ كد پست 11 را چيكار كنم
اگر بخواهم مثلا پس از گذشت 15 ثانيه هر چي فرم frmdate كه باز هست را ببندم چيكار بايد بكنم؟




private void Tick()
{
timer1.Start();
if (timer1.Interval == 3000)// نشان دادن ساعت
{
//foreach (Form frmp1 in Application.OpenForms)
// if (frmp1 is frmpic)
// frmp1.Visible = !frmp1.Visible;
if (numsaat == 12)
{
numsaat = 1;
}
else { numsaat++; };
saat frm = new saat();
frm.Show();
timer1.Interval = 2010;
}
else if (timer1.Interval == 2010) // فرم تاريخ
{
// saat.ActiveForm.Hide();

frmdate frm = new frmdate();
frm.Show();
timer1.Interval = 2015;
}
else if (timer1.Interval == 2015) //نشان دادن فرم تصوير
{
//frmdate.ActiveForm.Hide();
if (listImage.Count > current)
{
frmpic frm = new frmpic();
frm.Show();
if (idefect <= 28)
{
idefect++;
}
else { idefect = 0; }
current++;
timer1.Interval = 3000;
}
else
{
current = 0;
int t1;
sarasari =sarasari +1; //تشخيص مرحله اجرا

t1 = sarasari - 1;
temp1 = t1 * 15;

temp2 = sarasari * 15; //ta

// animationControl1.AnimatedImage = listImage[current];
Loadsafhe();
}
}
}

اينم كد منه كه توي تايمر نوشتم ميخوام پس از اينكه فرم ساعت نشان داده شد فرم ساعت هايد بشه و فرم تاريخ نشون داده بشه و دوباره فرم ساعت هايد بشه و اين دفعه فرم تصوير نشان داده بشه و دوباره از اول فرم تصوير هايد بشه و فرم ساعت و...

دوستان خواهشا كمك كنيد

M.YasPro
سه شنبه 19 مرداد 1389, 13:34 عصر
خیلی کدتون شلوغه
ضمیمه رو ببینید :

csharpprogramer88
سه شنبه 19 مرداد 1389, 14:13 عصر
دوست من سلام
از شما ممنونم كه كمك كرديد ولي اين پروژه خيلي خسته ام كرد و گيج گيجم الان هم كه وقت كافي اصلا ندارم من مشغول بررسي كد شما هستم پروژه خودمم ميفرستم خواهشا بررسي كنيد
ميخوام اول فرم ساعت و بعد فرم تاريخ و بعد فرم تصوير نمايش داده بشه و پس از نمايش هر كدوم از فرم ها فرم قبلي بسته بشه
با تشكر از شما