سلام
من دوتا فرم دارم و یک تایمر که هر 5 ثانیه یک بار این تایمر فرم دوم رو show dialog می کنه
حالا من میخوام که چک کنم اگر فرم دوم شو شده دیگه شو نکنش یعنی به طور مفهومی کد این چطوری میشه (()if(Form2=ShowDialog
ممنون میشم راهنمایی کنید
در پاسخ به سوال شما من یک چیز تونستم پیدا کنم و فکر می کنم کارایی داشته باشه.
راه حل به این صورته که ابتدا یک تابع می نویسیم که بفهیم که چه فرم هایی باز هستند و تابع به صورت زیره:
public static Form IsFormAlreadyOpen(Type FormType)
{
foreach (Form OpenForm in Application.OpenForms)
{
if (OpenForm.GetType() == FormType)
return OpenForm;
}
return null;
}
حال می خواهیم فرمی را باز و یا روی آن فوکوس کنیم با استفاده از مقداری که تابع بالا بر میگرداند می توانیم اول مطمئن بشویم که فرم باز است یا نه و سپس اقدام لازم رو برای اون انجام بدیم.
در حقیقت شما برای تیک تایمرتون باید از کد زیر استفاده کنید: در اینجا ابتدا یک نمونه از فرم دوم ایجاد میشه ولی مقدار نال داره و بعد بررسی می کنه که آن فرم جزء فرم های باز است یا بسته. اگر بسته باشد یک شیء جدید از آن ایجاد کرده و آن را show() می کند و اگر باز باشد که بستگی به خودتان دارد و هر کاری می توانید با آن انجام دهید.
UserForm UForm = null;
if ((UForm = IsFormAlreadyOpen(typeof(UserForm)) == null)
{
UForm = new UserForm();
UForm.Show();
}
else
{
UForm.DoWhatever(); // may be UForm.Select();
}
البته این جوابیه که من تونستم پیدا کنم، امتحان کنید و نتیجه رو اطلاع بدین
