PDA

View Full Version : مبتدی: نحوه رفت و امد بین فرم ها



m.bibjan
دوشنبه 29 خرداد 1391, 16:07 عصر
سلام
مثلا توی پروژه من توی فرم A هستم.
من موقعی که میخوام برم توی فرم B ازین کد استفاده میکنم.
This.Hide();
WinB b = new WinB();
b.Show();
وقتی هم که بخوام برگردم توی فرم A ، ازین کد استفاده میکنم.
This.Close();
WinA a = new WinA();
a.Show();
احساس میکنم نباید فرم A رو دوباره new کنم.چون قبلا New شده . الان فقط باید نمایشش داد.بخاطر همین میام واسه برگشت به فرم A ، ازین کد استفاده میکنم.
This.Close();
WinA.Show();
فرم B رو می بنده ، ولی نمیدونم چرا فرم A رو نمایش نمیده.
لطفا راهنمایی کنید .

Boy_nn
دوشنبه 29 خرداد 1391, 20:44 عصر
نوی خط اول به جای show از showdialog استفاده کن و بعدش کد this.show رو بزن

m.bibjan
دوشنبه 29 خرداد 1391, 21:23 عصر
سلام ممنون ولی صورت مسئله رو پاکش کردی داداش.اگه بخوام فرم هاید شده رو نمایش بدم چه کد باید بزنم ، منظور اینه.

Parham.D
سه شنبه 30 خرداد 1391, 06:32 صبح
شما وقتی توی winB هستید چطوری به متد Show() از WinA دسترسی دارید، بدون اینکه ازش یک New بسازید؟!

m.bibjan
سه شنبه 30 خرداد 1391, 07:11 صبح
سلام اخه من قبلا new کردم فرم رو.بخوام دوباره فرم رو new کنم ، فرم اولی رو که new کرده بودم رو همینطوری رها کردم.
فکر میکنم بواسطه Property بشه. ولی نمیدونم چطوری.اگه کسی در جریانش هست ممنون میشم راهنمایی کنه؟

m.bibjan
سه شنبه 30 خرداد 1391, 18:27 عصر
سلام کسی نیست در جریان باشه؟یا وقت نمیکنید جواب بدین؟

Parham.D
چهارشنبه 31 خرداد 1391, 07:01 صبح
سلام. بیا مسئله را روشن کنیم. تا زمانی که شما یه وهله از WinA در WinB نداشته باشید به متد Show از WinA دسترسی ندارید. از طرفی اگر از WinA یک وهله جدید داشته باشید (New)، در واقع یک WinA دارید که مقدارهای اولیه و سایر تنظیمات reset شده اند. و اگر این وهله جدید را ببندید هنوز آن قدیمی باز است. تا آنجا که من میفهمم. پس شما باید به طریقی همان WinA اصلی را بدون new کردن به WinB ارسال کنید که کار توسط constructor در WinB امکان پذیر است. اول در WinB کد زیر را قرار بدید:


private Window WinA;
public Window1(Window GetWinA)
{
InitializeComponent();

WinA = GetWinA;
}

private void button1_Click(object sender, RoutedEventArgs e)
{
this.Close();
WinA.Show();
}


و بعد از WinA کدهای زیر:


private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Hide();
Window1 win1 = new Window1(this);
win1.Show();
}


امتحان کردن جوابد میده.

موفق باشید.

helpsos
جمعه 09 تیر 1391, 18:37 عصر
سلام
شما می توانید از مطالب این تاپیک استفاده کنید
.:باز-نمودن-چندین-فرم-در-یک-فرم:.