PDA

View Full Version : دسترسی به فرم دیگر بدون ساخت شی جدید از آن



harani
شنبه 21 مرداد 1391, 12:47 عصر
میخواستم بدونم آیا راهی هست که بدو اینکه یک شی جدید از فرم تعریف کنم به خصوصیت های آن دسترسی داشته باشم :

یعنی مثلاً من دو تا فرم (Form1,Form2) دارم روی فرم اولم یک تکست باکس هست که modifire آن public هستش برای تغییر خصوصیت آن از فرم دوم آیا به جزء کد زیر راه دیگری نیز هست .


Form1 frm = new Form1();//a
frm.textBox1.Text = "ABC";//b


لطفاً با کد توضیح بدهید ممنون از همه

nilmil_nil
شنبه 21 مرداد 1391, 13:23 عصر
میتونی توی فرمت یه متغیر استاتیک تعریف کنی
Public static a;
اونوقت بدون ساخت نمونه از فرم میتونی بهش دسترسی داشته باشی
و مثلا اون مقدار رو بریزی توی تکست باکس در هنگام لود فرم

harani
شنبه 21 مرداد 1391, 13:33 عصر
میتونی توی فرمت یه متغیر استاتیک تعریف کنی
Public static a;
اونوقت بدون ساخت نمونه از فرم میتونی بهش دسترسی داشته باشی
و مثلا اون مقدار رو بریزی توی تکست باکس در هنگام لود فرم


نه من میخوام از فرم دومم خصوصیت تکست باکس فرم اولم رو تغییر بدم . فکر کنم جوابم استفاده از ارثبری باشه (همانطور که در public partial class Form1 : Form کلاس فرم اول از فرم ارثبری میکنه) اگه میشه جوابمو با کد بدبید .

harani
شنبه 21 مرداد 1391, 13:37 عصر
اگر فرم1 قبلا باز شده باشه(شئ ای ازش موجود باشه) بله

خیلی ممنون ولی خداییش شما اگه جای من باشید متوجه میشید چی نوشتید .

Mahmoud.Afrad
شنبه 21 مرداد 1391, 13:38 عصر
اگر فرم1 قبلا باز شده باشه به این طریق

foreach (Form f in Application.OpenForms)
{
if (f is Form1)
{
Form1 frm = f as Form1;
frm.textBox1.Text = "your text";
break;
}
}

asadegha
شنبه 21 مرداد 1391, 15:59 عصر
حتما باید یه نمونه موجود باشه.

میدونی مثل چی میمونه؟

مثلا کلاسی داریم به اسم ماشین. این ماشین هر توعی میتونه باشه. با هر برند و هر نامی. (ولی تا اینجا فقط یه مفهوم از ماشین وجود داره)
حالا وقتی یه ماشین میسازی. یه شی فیزیکی، میتونی بهش اسم بدی و بگی این ماشین چه کارهایی میکنه.

اینجا هم همینه. تا وقتی یه شی فیزیکی از فرمت نباشه، نمیتونی مقداری ازش رو تغییر بدی.

انگار که همون ماشین که اصلا وجود نداره بخوای بری بنزین بزنی.

titipop1
پنج شنبه 05 شهریور 1394, 22:20 عصر
درود دوستان
من یه فرم لاگین دارم که توی اون از دوتا تب کنترل مجموعه devcomponent استفاده کردم حالا میخوام توی یه فرم دیگه بتونم این تب کنترل رو نمایش یا مخفی کنم
روشی که خودم استفاده کردم اینه که modifire تب کنترل ها رو public کردم و توی فرم ثانویه از طریق یه نمونه به اونا دسترسی پیدا کردم که متاسفانه چیزی تغییر نمیکنه
باز اومدم از خیر تب کنترل ها گذشتم و گفتم بذار باتن درون تب کنترل ها رو غیر فعال کنم که باز اونم نشد
کد من توی فرم ثانویه:

frm_login fl = new frm_login():
fl.tabItem2.Visible = true;
fl.tabItem4.Visible = true;
fl.tabItem5.Visible = true;
fl.button2.Enabled = false;
fl.button1.Enabled = true;
fl.button3.Enabled = true;
fl.ShowDialog();

از راهنماییتون ممنونم

silver189
سه شنبه 10 شهریور 1394, 09:26 صبح
از این روش هم می تونید استفاده کنید :
((frmScheud)Application.OpenForms["frmScheud"]).btnSave.Enabled = true;