PDA

View Full Version : سوال: غیر فعال بودن فرم هنگام Show کردن آن (بگو برای چی؟)



Rejnev
جمعه 18 تیر 1389, 22:12 عصر
سلام
فرض کنید از داخل یک کلاس یک فرم رو نمایش بدیم. میخوام فرمی که نمایش داده میشه فوکاس نباشه و فوکاس روی همون فرمی باشه که متد کلاس رو صدا زده(و کلاس هم اون فرم رو نمایش داده)
راهی به ذهنتون میرسه؟
البته میشه به صورت پارامتر، به متد کلاس، کنترل فعال رو هم فرستاد، اما نمیخوام برنامه رو تغییر بدم چون خیلی ازش استفاده کردم و دیره(جالب هم نیست).
مثال کدی که اتفاق میفته هم در زیر آوردم:



//in form1
btn_click()
{
class1.ShowForm2()
}
//--------
//in class1
void ShowForm2()
{
new Form2().Show();
}


علت این که همچین کاری رو کردم نمایش یک پنجره Notify مانند کنار ساعته.(عقلم همونقدر قد داد)
درست مثل آنتی ویروسهایی مثل kasper و nod
من اون رو با یک فرم پیاده سازی کردم و به این مشکل خوردم.
البته وقتی فوکاس روی اون قرار میگیره با یک کلید(هر کلیدی) اون کادر(در اصل فرم) بسته میشه و خودکار برمیگرده روی کنترل قبلی(که فرم صدا زننده باشه) ولی باز هم اگه فوکاس روش نره بهتره.
کسی اگه یک طرح جایگزین برای اون داره رو هم میپذیرم :-)
با تشکر

hossein_ignore
جمعه 18 تیر 1389, 22:29 عصر
اینجوری مشکلت حل نمیشه؟

btn_click()
{
class1.ShowForm2()
this.Focus();
}

Rejnev
جمعه 18 تیر 1389, 22:47 عصر
اینجوری مشکلت حل نمیشه؟

btn_click()
{
class1.ShowForm2()
this.Focus();
}

آخه همیشه یک فرم، متد رو صدا نمیزنه. ممکنه یک کلاس دیگه اون خطا رو گزارش کنه.
و همینطور ندونه که الآن کدوم فرم فعاله.
ویرایش:
حالا که فکر کردم میبینم که شاید با این کد بشه یک کارایی کرد بنابراین تاپیک رو مختومه اعلام میکنم، مگر اینکه کسی یک طرح استانداردی لطف کنه و ارائه بده.



//class:
showForm2()
{
Form f=Form.ActiveForm;
form2.show()...
f.Focus();
//it works
}