سلام .
احتمالا سئوالم تكراريه.
مي خواستم بدونم كه چطور مي شه مثلا يك متغير ازنوع string يا يك آرايه يا هر چيز ديگه يي در يك فرم مقدار بگيره و در يك فرم ديگه بشه مقدارش رو گرفت و بررسي كرد يا حتي تغييرش داد.#c
ممنون
Printable View
سلام .
احتمالا سئوالم تكراريه.
مي خواستم بدونم كه چطور مي شه مثلا يك متغير ازنوع string يا يك آرايه يا هر چيز ديگه يي در يك فرم مقدار بگيره و در يك فرم ديگه بشه مقدارش رو گرفت و بررسي كرد يا حتي تغييرش داد.#c
ممنون
سلام.
سوالتون تکراریه خوب اگه میدونید لطفاً جستجو کنید.واسه خودتون نمیگم.واسه خودم میگم!!از بس سوالای تکراری جواب دادم!!
داخل فرم 1 متغیر رو به صورت زیر تعریف کنید:
بالای فرم 1 یک متغیر از نوع فرم دوم تعریف کنید:کد:public string A;
بالای فرم دوم یک متغیر از نوع فرم اول تعریف کنید:کد:public frm2 FRM2M = new frm2();
حالا تو فرم لود فرم 1 بتایپ:کد:public Form1 FRM1 = new Form1();
حالا اگه میخوای از متغیر فرم اول تو فرم دوم استفاده کنی کد زیر رو تو فرم دوم بتایپ:کد:FRM2M.FRM1 = this;
موفق باشید.کد:FRM1.A = "AAA";
ممنون.يك بار جستجو كردم ديدم چيزاي بي ربط اومد ديگه نگشتم.
ضمنا راه ديگه يي نداره؟ من شنيده بودم كه بايد يك كلاس ساخت و با استفاده از اون متغير رو جا به جا كرد
جستجوی سایتو بی خیال ... از عمو گوگل استفاده کن .
به این صورت :کد:عبارت مورد نظر site:www.forum.p30world.com
ممنون.پيدا كردم.
ولي جواب سئوال دومم رو نگرفتم.اگه ما 5 تا فرم داشتيم و چند تا متغير جا به جا مي شد يعني بايد همه رو تو هم ديگه new كنيم؟ يه كم يه جوراييه
روشتون کاملا اشتباهه.با این روش شدیدا برخورد میشه چون اصول شی گرایی (در اینجا کپسوله سازی) رو زیرپا میگذاره.نقل قول:
تا اونجا که ممکن هست باید از public کردن یک متغیر خودداری کرد.
یک راه اینه که می تونید از property ها استفاده کنید .....
و یک راه دیگه هم استفاده از یک کلاس static هست.....
همون طور که گفتم شما می تونی از یک کلاس static استفاده کنی.به این صورت:نقل قول:
ولي جواب سئوال دومم رو نگرفتم.اگه ما 5 تا فرم داشتيم و چند تا متغير جا به جا مي شد يعني بايد همه رو تو هم ديگه new كنيم؟ يه كم يه جوراييه
برای این منظور از Configuration هم می تونید استفاده کنید.(Settings)کد:static class MyClass
{
private static string s;
public static string Str
{
get { return MyClass.s; }
set { MyClass.s = value; }
}
}
//Form1 Codes
private void button1_Click(object sender, EventArgs e)
{
MyClass.Str = "sajjad";
new Form2().Show();
}
//Form2 Codes
private void Form2_Load(object sender, EventArgs e)
{
this.Text = MyClass.Str;
}
ممنونم دوست من...نقل قول:
من چون عجله داشتم و حصوله نوشتن فضای نام کلاس رو نداشتم!! فکر کردم شما میدونید....!!!
منظورم از فضای نام NameSpace یک کلاس جداگانه بود که در اینصورت اگه Public نشه از متغیر و کلاس نمیتونین استفاده کنین.
خوب شما اگه دوتا پروژه جداگانه داشته باشین آیا میتونین به این روشی که گفتین عمل کنین؟
static هم در همه موارد استفاده نمیشه.باید جواب سوال عمومی باشه.این تایپی که شما فرمودین فقط در یک پروژه و یک فرم استفاده میشه.
راستی روش درسته فقط عمومیه یعنی همه جا میتونی استفاده کنی.
خوب بی خیال شما اگه بخوای داخل فرم دوم از متغیر فرم 1 استفاده کنی بازم Static میکنی؟همیشه کپسول نیست بعضی وقتها پیکنیک هم هست!
در هر صورت ممنونم.
سلامنقل قول:
برای پاس دادن یک پارامتر از یک فرم به فرم دیگه شما باید ابتدا constructor فرم دوم را طوری تغییر بدید که مقدار بگیره .
تغییراتی که در فرم 2 باید داده شود .
کد زیر برای فرم 1 تا یک پارامتر را پاس دهدکد:private string test = "";
public Form2(string Ptest)
{
InitializeComponent();
test = Ptest;
}
موفق باشی :)کد:form2 frm=new form2("عبارتی که می خواهید پاس شود");
frm.showdialog();
ببخشید.ولی باید بگم.نمی دونم شما انتقادپذیر هستید یا نه.ولی قصد جسارت ندارم و فقط به اندازه ای که می تونم به ارتقاء سطح علمی کمک کنم فکر می کنم.
خوب دلیل نمیشه که روش غلط رو آموزش بدیدنقل قول:
من چون عجله داشتم و حصوله نوشتن فضای نام کلاس رو نداشتم!! فکر کردم شما میدونید....!!!
اگه توجه کنید من یه روش دیگه هم تحت عنوان استفاده از Property ها ارائه کردم.نقل قول:
خوب شما اگه دوتا پروژه جداگانه داشته باشین آیا میتونین به این روشی که گفتین عمل کنین؟
static هم در همه موارد استفاده نمیشه.باید جواب سوال عمومی باشه.این تایپی که شما فرمودین فقط در یک پروژه و یک فرم استفاده میشه.
راستی روش درسته فقط عمومیه یعنی همه جا میتونی استفاده کنی.
خوب بی خیال شما اگه بخوای داخل فرم دوم از متغیر فرم 1 استفاده کنی بازم Static میکنی؟همیشه کپسول نیست بعضی وقتها پیکنیک هم هست!
در این روش تلفیقی از کدی که جناب mahdi7610 ارائه کردن و Property استفاده میشه.من نگفتم همه جا از static استفاده کنید.گفتم این هم یه روشه.
در خط پایین کدی که گذاشتم هم گفتم می تونید از Configuration یا AppSettings استفاده کنید که این هم فقط یه روشه.
اما در مورد اصل کپسوله و اصل پیکنیک: < D: >
نگاه کنید دوست عزیز.کدنویسی پیشرفته نیاز به دانستن چیزهای زیادی داره.استانداردهایی برای اون ارائه شده که encapsulation و information hiding هم از اون مستثنی نیستن و از اصول اساسی به حساب میان.نمیگم من کدنویسی پیشرفته بلدم ولی حداقل این چیزها رو رعایت میکنم...
امیدوارم شما و بقیه دوستان هم همینطوری یا حداقل بهتر از من باشید....
موفق باشید...