PDA

View Full Version : مشكل در پنهان كردن فرم



shaki_phd
سه شنبه 13 اسفند 1387, 18:02 عصر
سلام
من يك مشكل در ارتباط با نمايش يك فرم دارم كدم به اين صورت است


Settings settingsfrm = new Settings();
settingsfrm.loadfrm = this;
this.Hide();
settingsfrm.Show();


من ميخوام از طريق يك فرم يك فرم Child ديگه رو فراخواني كنم و فرم Parent رو hiden كنم اما متاسفانه فرم Parent پنهان نميشود و هر دو فرم نمايش داده ميشود
همچنين loadfrm فرم Parent من هستش و در فرم Settings يك public instance از نوع loadform تعريف كردم
ممنون ميشه اگه راهنماييم كنيد

shytonak
سه شنبه 13 اسفند 1387, 19:44 عصر
دوست عزيز اين طور كدتو بنويس شايد كارت راه افتاد.

Form1 a = new Form1();
a.show();
this.hide();
form1 همون فرمي كه ميخواي نمايش بدي.

Editali
چهارشنبه 14 اسفند 1387, 00:13 صبح
سلام دوست عزیز، اینو تو یه تاپیک دیگه ام گفتم



{...
Form2 frm=new Form2();
frm.FormClosing+=new System.EventHandler(Closing_Form);
frm.Show();
this.Hide();
...}

private void Closing_Form(object sender, EventArgs e)
{
this.Show();
}

shaki_phd
چهارشنبه 14 اسفند 1387, 08:59 صبح
سلام
shytonak كد شما متاسفانه به درد من نميخوره چون من نياز دارم كه به فرم Parent نيز دسترسي داشته باشم كه با كد شما نمي شود

Editali من كد شما رو هم استفاده كردم اما متاسفانه باز هم فرم اول پنهان نشد در ضمن در كد شما هم من نمي تونم به اشياي فرم Parent دسترسي داشته باشم
با تشكر از حسن توجه شما

Editali
چهارشنبه 14 اسفند 1387, 11:01 صبح
توی C# به دلیل شی گرا بودن و جدا بودن کلاسها نمیشه مثل VB یه کل فرمهای برنامه دسترسی داشت. اگر میخوای به هردوتا دسترسی داشته باشی باید یه فرم دیگه بسازی که اون بشه رابط بین هر دو فرم. دقت کن که همه دسترسی ها باید public باشه.

shaki_phd
چهارشنبه 14 اسفند 1387, 13:44 عصر
سلام
دوست عزيز منم اين قضيه شي گرا بودن رو ميدونم
اگه كدم رو مي خوندي ميديدي كه در فرم دوم يك public instance از فرم اول تعريف كردم و هنگامي كه ميخوام فرم دوم را نمايش بدم مقدار فرم اول را در public instance مي ريزم

اين تيكه كد فرم اولم هستش



Settings settingsfrm = newSettings();
settingsfrm.loadfrm = this;
this.Hide();
settingsfrm.Show();


و اين تيكه كد فرم دومم هستش




public LoadForm loadfrm;



راستي Editali عزيز من كد شما هم تست كردم (بيخيال ارتباط شدم) اما فرمم پنهان نميشه
راستي اينم بگم كه من توي يك پروژه خالي ديگه تستي دوتا فرم ايجاد كردم و با كدم به راحتي تونستم فرم اول را پنهان كنم اما نميدونم تنظيماتي تغيير كرده كه تو اين پروژم اين كار صورت نميگيره

Editali
پنج شنبه 15 اسفند 1387, 00:53 صبح
خوب بیا یه کلک بزن!
فرم اول رو اول Minimize کن و بعد مقدار ShowInTaskbar رو False کن.

H2K
پنج شنبه 15 اسفند 1387, 16:35 عصر
سلام

دوست من بهترين راه اين هست كه يه نمونه بذارى اينجا كه مشكل رو بگى شما ۱ خط كدِ گذشتى و ميگى ميخواى فعلا كار و بكنى ، توضيح كامل بدين چى كار ميخواى بكنى تا به جواب ِ درست و سرى برسى

براى دست رسى داشتن به فرم parent بالاى 100 پست هست و هم چنين Show و hide كردن فرم ها :لبخندساده:

zeinalkhani
جمعه 16 اسفند 1387, 07:22 صبح
سلام
برای اینکار می تونید فرم اول را به عنوان پارامتر به فرم دوم ارسال کنید.
کد یه برنامه ساده رو گذاشتم:


using System;
using System.Windows.Forms;

class TestClass
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
}
public class Form1 : Form
{
Button button1;
Form2 frm2;

public Form1()
{
button1 = new Button();
button1.Text = "button1";
button1.Click += new EventHandler(button1_Click);
Controls.Add(button1);
this.Show();
}

private void button1_Click(object sender, EventArgs e)
{
frm2 = new Form2(this);
frm2.Show();
}
}

public class Form2 : Form
{
Form parentfrm = null;
public Form2(Form frm)
{
parentfrm = frm;
parentfrm.Hide();
FormClosed += new FormClosedEventHandler(this.Form2_FormClosed);
}

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
parentfrm.Show();
}
}
موفق باشید

bachebahal_1363
جمعه 16 اسفند 1387, 14:41 عصر
سلام دوست عزیز
اول اینکه معماری خودت رو اینجا بنویس که بدونیم دلیلت از این کار چی هست ، چون در مواقعی که شما یک برنامه ایجاد می کنید به صورت Parent/Child اصولا معماری یک برنامه نویس این هست که فرم Parent در هر صورت وجود داشته باشه مانند برنامه هایی مثل ورود و امثال اون.
اگر با برای ارسال پارامتر این فرم رو می خوای نگه داری که به بحث ارسال پارامتر در فرم ها مربوط می شه و وارد اون می شیم.
در هر صورت اگر بگی دقیقا می خوای به چه نتیجه ای برسی بهتر نتیجه می گیری

shaki_phd
شنبه 17 اسفند 1387, 12:14 عصر
سلام دوستان مرسي از راهنماييهاتون
مشكل من برطرف شد راستش مشكل اين بود كه ميخواستم در متد Load‌فرمم اين كار رو بكنم به همين دليل در هر صورت فرمم نمايش داده ميشد اما وقتي اين كار رو در متد Shown انجام دادم درست كار كرد هر چي فكر مي كنم نمي تونم دليلش رو بفهمم(كسي ميدونه)
خلاصه ايشالا كسي مثل من از اين سوتي هاي چرت نده بعضي وقتها اين C# واقعا زبون نفهم ميشه :لبخند:
راستي كسي ميدونه چه جوري ميشه نگذاشت بيشتر از يك Instance از فرم باز بشه؟