ورود

View Full Version : سوال: بسته نشدن پنجره اصلی در صورت باز بودن یه پنجره فرعی



dharmaa
شنبه 06 مهر 1392, 02:55 صبح
سلام دوستان
من میخام در برنامه ام کاری کنم که اگه یه پنجره داخل پنجره اصلی باز بود و کاربر روی دکمه close پنجره اصلی کلیک کرد برنامه بسته نشه ، و یا اگه روی دکمه مینیمایز کلیک کرد اتفاقی نیفته (چون یه پنجره فرعی بازه)به عبارتی زمانی بسته بشه و یا مینیمایز بشه که هیچ پنجره فرعی باز نباشد. البته این رو اضافه کنم که از MDI استفاده نکردما.
دوستان خواهش میکنم از پیشنهادات و تجربیاتتون بی بهره مان نکنید.
ممنون ...

hosein320
شنبه 06 مهر 1392, 08:01 صبح
Dim C As Integer = 0
For Each F As Window In Application.Current.Windows

C += 1
Next
If C > 1 Then
e.Cancel = True
End If

dharmaa
شنبه 06 مهر 1392, 08:44 صبح
Dim C As Integer = 0
For Each F As Window In Application.Current.Windows

C += 1
Next
If C > 1 Then
e.Cancel = True
End If
سلام دوست گرامی بسیار ممنونم . تفاوت کد شما با کد من فقط در یک خط بود که همون یه خط هم باعث میشد که من جواب درستی نگیرم.شما از e.cancel=true استفاده کردین ولی من از return استفاده میکردم که البته درست نبود.بسیار ممنونم بابت کمکتون.
اما برای مینیمایز کردن :اومدم کد زیر رو گذاشتم اما خوب e.cancel نداره به نظرتون چه کار کنم که اجرای رویداد رو کنسل کنم؟؟!!!
private void WinMaster_StateChanged(object sender, EventArgs e)
{
int i = 0;
switch (this.WindowState)
{

case WindowState.Minimized:
foreach (Window item in Application.Current.Windows)
{
if (item.Name != "WinMaster")
i++;
}
if (i > 0)
{
// e.Cancel=true;

}
}
break;

}
}

hosein320
شنبه 06 مهر 1392, 09:59 صبح
Dim C As Integer = 0
For Each F As Window In Application.Current.Windows

C += 1
Next
If C > 1 Then
Me.WindowState = Windows.WindowState.Normal
End If

dharmaa
یک شنبه 07 مهر 1392, 20:01 عصر
سلام, بازم ممنون بابت پاسختون. همانطور که ملاحظه می کنیدمن اومدم از رویدادStateChanged استفاده کردم و همین باعث میشه که با کلیک کردن روی دکمه مینیمایز اول پنجره مینیمایز بشه و بعد سریع دوباره به حالت نرمال برمیگرده که قشنگ در نمیاید
private void WinMaster_StateChanged(object sender, EventArgs e)
{
int i = 0;
switch (this.WindowState)
{
case WindowState.Maximized:
this .WindowState = WindowState.Minimized;
break;
case WindowState.Minimized:
foreach (Window item in Application.Current.Windows)
{
if (item.Name != "WinMaster")
i++;
}
if (i > 0)

WinMaster1.WindowState = WindowState.Normal;
break;
}
}
از کدام رویداد دیگه میشه استفاده کرد؟؟؟