PDA

View Full Version : استفاده از کنترل های فرم دیگر!



loyalBC
پنج شنبه 10 فروردین 1391, 20:15 عصر
سلام دوستان

بنده اخیرا یادگیری زبان #C را شروع کردم و الان به یه مشکل برخوردم.

بنده 2 تا کلاس دارم که یکیش همان Form1ـی هست که با انتخاب Windows Application به وجود میاد، دیگری هم Class 1 هست. بنده می خوام از طریق Class 1 قابلیت Text کنترل لیبل Form1 رو تغییر بدم. روش هایی مثل Public کردن مودیفایر و همچنین دسترسی نظیر : Form1.Activeform.cotrols ["Label1"].textj وجود داشت که به نظر میرسه چندان اصولی نباشه. بنده 2 روش زیر رو به کار گرفتم ولی بازم جواب نمیده:

روش اول :

در Form1

public string settextlabel
}
get
}
return label1.text
{
set
}
label1.text= value
{

در class1

form1 myform = new form1();i

myform.settextlabel = " the string "i


روش دوم :

در Form1

public void settextlabel (string text )i
}
this.label1.text = text
{


در Class1

form1 myform = new myform1();i

myform.settextlabel ( " the string ")i


نمیدونم اشکال از کجاست چون واقعا دارم کلافه میشم!

پیشاپیش از کمکتون بسیار ممنونم...

C#.net
پنج شنبه 10 فروردین 1391, 21:19 عصر
مشکل اینجا هست که شما یک نمونه از فرم مد نظرتون رو می سازید و تغییرات مورد نظر(مثلا تغییر در تکست یک کنترل) رو اعمال می کنید ولی انتظار دارید تغییرات در نمونه دیگری از فرم اعمال بشه
پس باید یه جوری اون نمونه از فرمی که می خواهید تغییرات رو روش اعمال کنید رو پیدا کنید

در مثالی که ضمیمه کردم این روش با استفاده از یه متغییر استاتیک از فرم پیاده سازی شده که در کانستراکتور فرم مقدار می گیره.



public static Form CurrentInstance;
public Form1()
{
InitializeComponent();
CurrentInstance = this;
}



می تونید با همین تکنیک از طریق کلاستون به فرم دسترسی داشته باشید ولی اگر از طریق همون فرم می خواهید متد های اون کلاس رو صدا کنید شاید راه بهتر این باشه که در متد های کلاستون و یا کانستراکتور کلاس یه نمونه از فرم رو بگیرید (کافیه this رو بهش پاس کنید) این تکنیک رو هم در مثال براتون گذاشتم

sarbaz_esf
پنج شنبه 10 فروردین 1391, 21:23 عصر
سلام دوست عزیز این برنامه هم شاید بدردتون بخوره

84882