PDA

View Full Version : مشکل دسترسی به فرم های ساخته شده



ehsan mashkoori
شنبه 29 مرداد 1390, 17:52 عصر
با سلام
پس از ساختن فرم توسط فرم دیگر با دستور new چطور می توان تغییراتی در فرم اول با کلیک بر روی دکمه ای در فرم دوم ایجاد کرد؟
مشکل در این است که وقتی برای دسترسی به فرم اول از دستور new استفاده می شود یک نمونه جدید از فرم اول ایجاد می شود و فرم اولیه قابل دسترسی نیست.
(من کدی می خواهم که در آن بتوان بدون new کردن شی از فرم به اشیا فرم دسترسی پیدا کنیم )

mohammad_cmd
شنبه 29 مرداد 1390, 18:08 عصر
سوالتون رو درست نفهمیدم ولی کد ایجاد فرم و باز کردنش با کلید اینه

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

امید وارم مفید باشه

Restlesa
شنبه 29 مرداد 1390, 18:09 عصر
دوست عزيز اگه منظورت همون باشه كه نمونه اش رو آقا محمد زده كافيه كه براي دسترسي به فرم ساخته شده ات از نامي كه موقع تعريف به كاربردي استفاده كني
مثلا كد زير باعث تغيير كردن خاصيت Text فرمت كه با دستور new ايجاد كردي ميشه.(با توجه به دستور ساخت فرم مثال قبل)
ff.text="Calculator";

ehsan mashkoori
شنبه 29 مرداد 1390, 18:43 عصر
نه,منظور من اینه که مثلا خاصیت TEXT یک lable در فرم اول را توسط فرم دوم که توسط فرم اول new می شود,تغییر داد.لطفا کمکم کنید.

mas'oud
شنبه 29 مرداد 1390, 18:56 عصر
سلام
Modifire كنترلهايي كه قراره تغيير كنند رو از private به public تغيير بده.
بعد يك نمونه از فرم بساز و اينجوري عمل كن:


Form2 f = new Form2();
f.lable1.text = "Hello!";
f.ShowDialog();

Restlesa
شنبه 29 مرداد 1390, 19:06 عصر
نه,منظور من اینه که مثلا خاصیت TEXT یک lable در فرم اول را توسط فرم دوم که توسط فرم اول new می شود,تغییر داد.لطفا کمکم کنید.
دوست عزيز به راحتي مي توني در همون فرمي كه new ‌شده با استفاده از نام فرم مورد نظرت دسترسي لازم رو داشته باشي
دستور زير رو در قسمت مورد نظرت قرار بده
Form1.Label1.Text="مقدار مورد نظر";

ehsan mashkoori
شنبه 29 مرداد 1390, 19:09 عصر
این کدی که شما نوشتی برای فرم دومه,من می خوام تغییر در فرم اول توسط فرم دوم اعمال بشه.(در واقع فرم دوم رو فرم اول new کرده وفرم دوم خاصیت TEXT یک lable در فرم اول را تغییر بده).با new کردن مشکل حل نمیشه.

ehsan mashkoori
شنبه 29 مرداد 1390, 20:25 عصر
من کدی می خواهم که در آن بتوان بدون new کردن شی از فرم به اشیا فرم دسترسی پیدا کنیم

morteza271
شنبه 29 مرداد 1390, 20:36 عصر
یک متغیر از نوع فرم اولتون در فرم دوم تعیرف کنید به این صورت :
public partial class Form2 : Form
{
public Form1 Form1Instance = null;

public Form2()
{
InitializeComponent();
}
}
بعد وقتی میخواین فرم دوم رو باز کنید این کد رو بنویسید :
Form2 frm = new Form2();

frm.Form1Instance = this;

frm.ShowDialog();
حالا مثلا در رویداد کلیک یکی از کلید های فرم 2 میتونید متن یک لیبل یا هر کنترل دیگری از فرم اول رو عوض کنید به این صورت :
private void button1_Click(object sender, EventArgs e)
{
Form1Instance.label1.Text = "Morteza";
}
فقط لیبل یا هر کنترلی که میخواین اینطوری تغییرش بدین نباید Private باشه.
موفق باشید

ehsan mashkoori
شنبه 29 مرداد 1390, 20:52 عصر
کد که شما دادین درست بود,اما این کد frm.Form1Instance = this دقیقا چی کار می کنه؟

morteza271
شنبه 29 مرداد 1390, 20:54 عصر
فرم جاری رو به متغیر Form1Instance نسبت میده.
یعنی یه کپی از فرم1 برای فرم 2 ایجاد میشه.

georgiaro
یک شنبه 30 مرداد 1390, 01:46 صبح
فرم جاری رو به متغیر Form1Instance نسبت میده.
یعنی یه کپی از فرم1 برای فرم 2 ایجاد میشه.

البته کپی ایجاد نمیکنه و فقط رفرنس رو ست میکنه.
یعنی یک اشاره گر که به فرم قبلی اشاره میکنه، نه یک کپی مجزا. تا فرم دو فرم یک رو بتونه ببینه و تغییرات رو اعمال کنه.