PDA

View Full Version : سوال: اعمال تغییرات از فرم فرزند به فرم والد یا تمام فرم های باز[#C]



mohammadsadegh996
جمعه 05 شهریور 1395, 20:49 عصر
سلام
چطوری می تونم مشخصات فرم والد رو از فرم فرزند تغییر بدم؟

برای مثال با یه تکست باکس، عنوان فرم والد رو تغییر بدم

اینکار از طریق فرم والد به راحتی صورت می گیره اما از طریق فرم فرزند نمیدونم چطوریه؟

لطفا راهنمایی نمایید- با تشکر

mrprestige
جمعه 05 شهریور 1395, 23:04 عصر
سلام دوست من این کدی که برات نوشتم میتونی بهینه تر کنیش حالا چون من فقط میخواستم بهت نشون بدم که اصل کار به چه شکل هست اینطور نوشتم

توی کلاس فرم فرزند این کد رو مینویسی

public Form1 _TxtForm1;
public Form2(Form1 TXTForm1) : this()
{
this._TxtForm1 = TXTForm1;
}


توی کنترل button که داخل فرم فرزند ایجاد کردی این کد رو بنویس


_TxtForm1.text=Textbox1.text;

و در آخر هم داخل کنترلی که فرم فرزند رو صدا میزنی این کد رو بنویس


Form2 frm2=new Form2(this);
frm2.Show();


پیروز و موفق باشید

mohammadsadegh996
شنبه 06 شهریور 1395, 15:10 عصر
اون دوتا _TXTForm1 و TXTForm1 واسه چی هستن؟ میشه بیشتر توضیح بدین
برای تغییر opacity فرم والد از فرم فرزند چکار کنم؟

اصلا اگه بخوام از فرم 3 که توسط فرم 2 باز شده تغییرات رو روی فرم 1(فرم اصلی) اعمال کنم، انوقت چکار کنم؟

خیلی واسم مهمه لطفا راهنمایی کنید - با تشکر فراوان

mrprestige
شنبه 06 شهریور 1395, 20:42 عصر
اون دوتا _TXTForm1 و TXTForm1 واسه چی هستن؟ میشه بیشتر توضیح بدین
برای تغییر opacity فرم والد از فرم فرزند چکار کنم؟

اصلا اگه بخوام از فرم 3 که توسط فرم 2 باز شده تغییرات رو روی فرم 1(فرم اصلی) اعمال کنم، انوقت چکار کنم؟

خیلی واسم مهمه لطفا راهنمایی کنید - با تشکر فراوان


مجددا سلام دوست من ، در خصوص سوال اولتون باید عرض کنم من برای اینکه بتونم پارامتری که برای Constractor مربوط به Form2 ایجاد کرده بودم ( که همون TXTForm1 از نوع Form1 بود ) مقدار دهی کنم متغییری از جنس همون Form1 ایجاد کردم به نام TXTForm1_ که اون رو برابر همون TXTForm1 قرار دادم که اگه توی هرجای فرم2 خواستم پارامتر Form2 رو (TXTForm1) مقدار دهی کنم راحت متغییر TXTForm1_ مقدار دهی کنم و از طرفی هم چون برابر TXTForm1 قرارش دادم پس مستقیما جزو پارامتری که برای Form2 قرار داده بودم هم محسوب میشه (اون کلمه کلیدی this هم اگه برات سوال شده درواقع اشاره داره به فرم جاری مون که اینجا همون Form2 هست) به ویژگی TXTForm1_ زمانی پی میبرید که داخل همون فرم2 یا همون فرم فرزند توی button این دستور رو مینویسید

_TXTForm1.text=textbox1.text;

اینجا ما هر مقداری رو که داخل textbox بنویسیم داخل TXTForm1_ پاس داده میشه و وقتی TXTForm1_ مقدار دهی بشه در واقع TXTForm1 مقدار دهی شده پس ما به این صورت مقدار text مربوط به فرم والد رو تغییر دادیم حالا نکته بعدی که مطرح میشه اینه وقتی شما در فرم والد فرم فرزند رو new میکنید چون ما براش Constractor یا همون تابع سازنده ایجاد کردیم که دارای پارامتر بود ( که تعریفش رو عرض کردم به چه شکل بود ) باید پارامتری از نوع Form بهش بدیم که چون این دستور داخل همون فرم والد تعریف شده من پارامتر this رو که همون به معنی فرم جاری هست رو بهش پاس دادم میتونستی هم بنویسی Form1 مشکلی پیش نمیومد . در خصوص سوال دومتون : دوست من شما وقتی TXTForm1_ مینویسی بعدش نقطه رو میزنی به کلیه خصویات فرم والد دسترسی داری حالا چه میخواد opacity باشه چه Backcolor و چه Text و .. و .. و ..

_TXTForm1.Opacity = .50;



و در خصوص سوال آخرتون هم باید اینطور عرض کنم شما فرض کنید سه تا Form دارید 1 و 2 و3 که Form1 والد و بقیه فرم ها فرزند اون . حالا ما میخوایم توی فرم 3 مشخصات فرم والد رو تغییر بدیم به عنوان مثال همین Opacity بدین صورت عمل میکنیم اول در کلاس Form2 یک پراپرتی تعریف میکنیم بدین صورت

public Form1 MainForm { get; set; }

حالا Constractor پیش فرض اون که داخلش دستور initialize Component هست رو بدین شکل تغییر بدید

public Form2(Form1 mainForm)
{
InitializeComponent();
MainForm = mainForm;
}




داخل کنترلی که فرم 3 رو فراخوانی میکنید اینطور بنویسید

new Form3(MainForm).Show();

حالا داخل فرم 3 بشید و مانند فرم 2 عمل کنید یعنی اول یک پراپرتی در کلاس فرم 3

public Form1 MainForm { get; set; }

بعد تبدیل Constractor پیش فرض

public Form3(Form1 mainForm)
{
InitializeComponent();
MainForm = mainForm;
}






و درآخر یک button ایجاد کنید و داخش اینو بنویسید

MainForm.Opacity = .25;

امیدوارم همیشه پیروز و موفق باشید .