PDA

View Full Version : سوال: آیا فرم مورد نظر من باز است؟



mehdin69
جمعه 11 آذر 1390, 23:30 عصر
سلام
می خوام ببینم آیا توی برانمم فرمی با نام X باز هست یا نه چطور باید تشخیص بدم اینو؟:متفکر::متفکر::متفکر:
کد این رو می خوام
مرسی

ali_habibi1384
شنبه 12 آذر 1390, 00:13 صبح
منظورتون از باز بودن در حافظه لود بودنه يا اينكه فرم در حال نمايش باشه؟

mehdin69
شنبه 12 آذر 1390, 02:04 صبح
سلام
مي خوام ببينم جايي إز برنامه لود شده يا نه...
يعني همون توي حافظه الان لود شده يا خير...
مرسي

Parham.D
شنبه 12 آذر 1390, 06:59 صبح
foreachForm EachForm in Application.OpenForms)

{


if (EachForm.Name == "X")

{




// Do something here!

}

}

Amir Oveisi
شنبه 12 آذر 1390, 10:08 صبح
كد ساده تر كه نيازي به حلقه نداره:
if (Application.OpenForms["x"] != null)
{
//the form named "x" has been loaded
}

Masterhame
شنبه 12 آذر 1390, 10:57 صبح
جوابی که دوستان نوشتم در صورتی صحیح هست که شما از هر نوع فرم فقط 1 دونه باز کرده باشید.
اما زمانی که از یک فرم (مثلاً Form2) بیش از یکی باز شده باشه کمی مشکله تا بشه جواب سوالتون رو داد.
چون باید مشخص بشه منظور شما فرم اول از جنس Form2 هست یا فرم دوم از جنس Form2 یا سایر نمونه هایی که از Form2 ایجاد شده.
تمامی این نمونه ها هم توی Application.OpenForms لیست میشه که شما باید یه جورایی از قبل یک تفاوتی بین هر کدوم از نمونه های ایجاد شده بوجود بیارید.
مثلاً می تونید با هر ایجاد نمونه از Form2 یک چیزی شبیه به ID یا اسم خاص یا هر چیزی که بتونه شما رو در تشخیص اینکه آیا این نمونه همون فرم مد نظر شما هست یا نه، کمک بکنه، ایجاد کنید.
شما می تونید این اطلاعات تفکیک فرمها از هم رو توی خصوصیت Tag ذخیره کنید. به این شکل که f1.Tag و f2.Tag و f3.Tag مرجع شناسایی اختلاف هر کدوم از نمونه ها باشه. (f1، f2 و f3 نمونه هایی از جنس Form2 هستن)

برای چک کردن این قضیه می تونید این کد رو تست کنید تا ببینید بین نمونه های ایجاد شده هیچ فرقی وجود نداره:
Form2 f1 = new Form2();
Form2 f2 = new Form2();
Form2 f3 = new Form2();

f1.Show();
f2.Show();
f3.Show();

for (int i = 0; i < Application.OpenForms.Count; i++)
{
Form x = Application.OpenForms[i];
}

mehdin69
یک شنبه 13 آذر 1390, 01:48 صبح
سلام براي اينجوري كه من مي خواستم همون راه حل دوستمون آقاي -
Amir-Oveisi بهترين گزينه هست.
چرا كه من قبل إز باز شدن هر فرمي دارم چك مي كنم كه اگه قبلاً باز هست ديگه بازش نكنه تا همچين مشكلاتي پيش نياد