سلام.
دلیل اینکه 60 بار فرم رو نشون میده احتمالا بخاطر این هست که intervalرو برابر 1000 میلی ثانیه (1 ثانیه) گذاشتی. در این حالت رویداد Tick هر 1 ثانیه یکبار اجرا میشه که شما داخلش فرم 2 رو new میکنی و نمایش میدی و دلیل اینکه 60 بار صورت میگیره اینه که براساس ساعت و دقیقه چک میکنی و هر دقیقه هم 60 ثانیه هست. مثلا 21:30 رو در نظر بگیر تا زمانیکه ساعت بشه 21:31 دقیقه، 60 بار رویداد Tick شما اجرا میشه.
این نکته رو دقت کنید که درون رویداد Tick باید timer رو غیر فعال کنید.(اول تایمر رو غیرفعال کنید و بعد فرم رو نمایش بدید).
روی سیستم خودم بصورت عملی تست کردم. مشکلی نبود. کدها رو کامل میذارم :
ابتدا توی رویداد Load ، تایمر رو start کنید :
timer1.Start();
حالا درون رویداد Tick ابتدا ساعت رو نمایش بدید و بعد ساعت جاری رو با ساعت مورد نظرتون چک کنید و ...
من فرض کردم فقط بر حسب دقیقه کار میکنی اگر بر حسب ثانیه هست دیگه نیازی به substring نخواهی داشت (در کد زیر متد substring ساعت و دقیقه رو میکشه بیرون).
من یک ساعت فرضی رو قرار دادم ( 13:03). شما به جاش ساعتی رو که از کاربر میگیری قرار بده (فقط یادت باشه حتما فرمتش به همین شکل باشه یعنی دو رقم ساعت، یه دو نقطه : و باز دو رقم دقیقه).
private void timer1_Tick(object sender, EventArgs e)
{
LabelTime.Text = DateTime.Now.Hour.ToString("00:") + DateTime.Now.Minute.ToString("00:") +
DateTime.Now.Second.ToString("00");
if (LabelTime.Text.Substring(0, 5) == "13:03")
{
timer1.Stop();
Form2 f2 = new Form2();
f2.ShowDialog();
}
}