View Full Version : باز نمودن چندین فرم در یک فرم
helpsos
شنبه 23 اردیبهشت 1391, 00:18 صبح
می خواهیم در WPF کاربر بتواند فرم های مختلف برنامه را باز کند و عملیات مورد نظر را انجام داده سپس در صورت تمایل فرم را ببندد.
اگر از دستور form1.show() استفاده کنی که هر بار این فرم را باز می کند و چندین فرم از یک نمونه را داریم.
اگر از دستور form1.showdialog() استفاده کنیم که کاربر فقط می تونه از یک فرم استفاده کنه.
*** تقریبا مثل فرم های mdi بشه طراحی کرد *********
در فایل ضمیمه نمونه ای هست که مشکلش این است که نمیتوان focus را به فرم باز مورد نظر داد.
حالا اگر کسی راهی بلته بفرمادددد؟
مهدی فرزاد
شنبه 23 اردیبهشت 1391, 09:11 صبح
سلام
http://wpfmdi.codeplex.com/
منظورتون از نوشته زیر چی هست؟
گر از دستور form1.show() استفاده کنی که هر بار این فرم را باز می کند و چندین فرم از یک نمونه را داریم.
helpsos
یک شنبه 24 اردیبهشت 1391, 00:25 صبح
سلام
http://wpfmdi.codeplex.com/
منظورتون از نوشته زیر چی هست؟
چون نمی شود فرم 1 که باز شده است را تشخیص داد از یک فرم چند تا باز میشه
اما در مورد mdi ها من فرم هام آماده است ولی در اون سایت گفته که باید فرم را بسازیم البته اگر درست متوجه شده باشم و
اگر اشتباه متوجه شده ام مرا با یک نمونه برنامه توجیه نمایید :تشویق:
با تشکر فراوان
مهدی فرزاد
شنبه 30 اردیبهشت 1391, 14:22 عصر
سلام
چون نمی شود فرم 1 که باز شده است را تشخیص داد از یک فرم چند تا باز میشه
var item = App.Current.Windows.Cast<Window>().SingleOrDefault(a=> a.IsLoaded == true && a.GetType().Name == "Window1");
if (item != null)
{
if (item.IsActive == false && item.WindowState == System.Windows.WindowState.Normal)
{
item.Activate();
}
else if (item.IsActive == false && item.WindowState == System.Windows.WindowState.Minimized)
{
item.WindowState = System.Windows.WindowState.Normal;
}
}
else
{
Window1 win = new Window1();
win.Show();
}
helpsos
چهارشنبه 10 خرداد 1391, 00:38 صبح
با سلام
از راهنمایی شما ممنون
و اما بعد:
خب حالا این مشکل پیش میاد که مثلا اگه ما بخواهیم یک تب کنترل را درون فرمی که باز هست ولی اکتیو نیست را انتخاب کنیم با مشکل رو به رو می شویم
در فایل زیر شاید بهتر متوجه شوید
حالا باید چکار کرد ؟؟؟؟؟/:متفکر::متفکر:
مهدی فرزاد
چهارشنبه 10 خرداد 1391, 08:59 صبح
سلام
private void TAB1_button_Click(object sender, RoutedEventArgs e)
{
var item = App.Current.Windows.Cast<Window>().SingleOrDefault(a => a.IsLoaded == true && a.GetType().Name == "Window1");
if (item != null)
{
if (item.IsActive == false && item.WindowState == System.Windows.WindowState.Normal)
{
item.Activate();
}
else if (item.IsActive == false && item.WindowState == System.Windows.WindowState.Minimized)
{
item.WindowState = System.Windows.WindowState.Normal;
}
(item as Window1).tabItem1.IsSelected = true;
}
else
{
Window1 win = new Window1();
win.Owner = this;
win.tabItem1.IsSelected = true;
win.Show();
}
}
private void TAB2_button_Click(object sender, RoutedEventArgs e)
{
var item = App.Current.Windows.Cast<Window>().SingleOrDefault(a => a.IsLoaded == true && a.GetType().Name == "Window1");
if (item != null)
{
if (item.IsActive == false && item.WindowState == System.Windows.WindowState.Normal)
{
item.Activate();
}
else if (item.IsActive == false && item.WindowState == System.Windows.WindowState.Minimized)
{
item.WindowState = System.Windows.WindowState.Normal;
}
(item as Window1).tabItem2.IsSelected = true;
}
else
{
Window1 win = new Window1();
win.Owner = this;
win.tabItem2.IsSelected=true;
win.Show();
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.