PDA

View Full Version : جستجو فرمهای باز



relax_cp
شنبه 03 مهر 1389, 14:00 عصر
با سلام
سوالی داشتم.
فرض کنید ما 3 تا فرم بصورت فرزند در فرم والد باز کردیم. حالا چطور میشه نام فرمهای باز رو داشته باشیم
مثلا ما می خواهیم بدانیم که آیا از فرم form1 آیا در صفحه والد باز هست یا نه؟
و همچنین می خواهیم بدانیم که چطور میشه به لیست تمام فرمهای باز برنامه دسترسی داشته باشیم.
اگه بتونید کمک کنید مشکل بزرگی رو از روی دوشم برداشتید.
ممنون

danialafshari
یک شنبه 04 مهر 1389, 03:13 صبح
این کار خیلی ساده ایه با استفاده از کلاس که در اون میتونی مقدار bool تعریف کنی و وقتی فرمت باز شد تو متغیر True میشه و از اینجا میفهمی که این فرم بازه :لبخند: Yahoo ID=danial_online & gmail=dani.afshari@gmail.com

relax_cp
یک شنبه 04 مهر 1389, 11:30 صبح
از danialafshari (http://barnamenevis.org/forum/member.php?u=68467) ممنون ولی
این راه حل بهینه نیست چون اولا باید همه اونها رو از نوع سراسری انتخاب کنیم و بعدش تعداد فرمهای باز رو نمی تونیم داشته باشیم
مثلا فکر کنید شما از یک فرم 3 مرتبه باز کردین ولی شما نمی تونید متوجه بشین.
و ضمنا نمی شه فهمید که کدام فرمها باز هستند و لیست فرمهای باز رو ندارین
اگه میشه منظورتون رو واضح تر بگین یا راه حل بهتری بدین
از برو بچ دیگه هم میخوام کمک کنن.
من چند سال هست که vB6 کار هستم و الان 3 ماهی هست که دارم C#.net کار می کنم. خیلی زبان خوبی هست و پر قدرت.
ممنون میشم کمکم کنید.

Reza_Yarahmadi
یک شنبه 04 مهر 1389, 14:51 عصر
خاصيت OpenForms از كلاس Application براي همين كار تعبيه شده. اين خاصيت در واقع يك آرايه از فرم به حساب مياد و ميتونيد به صورت زير ازش استفاده كنيد.

Application.OpenForms["Form2"].Show();
//OR
int i = 0;
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == "Form1")
i++;
}
MessageBox.Show(i.ToString());

Salar Ashgi
یک شنبه 04 مهر 1389, 23:04 عصر
مثال با LINQ :



string[] ar = (from frm in Application.OpenForms.OfType<Form>()
select frm.Name).ToArray();
MessageBox.Show(ar.Length.ToString());//if we have form1&from2=>result=2

relax_cp
دوشنبه 05 مهر 1389, 19:36 عصر
ممنون بخش عمده ای از مشکل من حل شد حالا میشه بفرمایید که چطور میشه به خصوصیات top , left اون فرمها دسترسی داشته باشیم.
من می خوام اگه دو تا فرم توی صفحه باز شد کنار هم قرار داده بشه و روی هم نیوفته .
برای این مطلب چه راهکاری دارید؟

danialafshari
جمعه 14 آبان 1389, 02:53 صبح
اول اینکه هیچ وقت نباید بذاری که یک فرم چندین بار باز بشه چون خلاف اصوله برنامه هست و درسته متغیر سراسری می زاری ! یک راه دیگه هم هست دقیقا یادم نیست هر موقع وقت کردم برات میزارمش :چشمک: