PDA

View Full Version : تغییر پراپرتی های کلاس به ارث رفته از طریق کلاس فرزند



vof.ir
شنبه 20 فروردین 1390, 16:17 عصر
با سلام.
من چند تا فرم توی برنامه دارم.
یک فرم هم به عنوان قالب .
مثلا frmBase را هر جوری که میخواهم تغییر می دهم و بقیه فرم های به جای اینکه از Form ارث ببرند از فرم مورد نظر من frmBase ارث می برند.

سوالی که دارم این است که چه طور می توانم در run time مشخصات فرم frmBase را تغییر دهم و فرم های فرزند نیز همین تغییرات را به ارث ببرند؟

من در رویداد دکمه ای که در فرم frmMain هست نوشتم
base.Font=fontDialog1.Font;
نتیجه این شد که کنترل هایی که از فرم frmBase به ارث رسیده بودند فونتشان تغییر کرد

در همین فرم frmMain و در رویداد کلیک دکمه کد ذیل را اضافه کردم
Form3 frm3 = new Form3();
frm3.ShowDialog();
fontDialog2.ShowDialog();
base.Font=fontDialog2.Font;



اما در این حالت فونت فرم3 تغییر نکرد.
خواستم بدونم که آیا دستکاری پراپرتی کلاسی که از آن ارث بری می شود، نکته خاصی دارد؟
و اینکه اگر از یک فرم در زمان طراحی ارث بری شود، فقط پراپرتی های base این فرم را میتوان تغییر داد؟
ظاهرا که اینطور است. چون فرمی که در زمان اجرای برنامه ساحته و نمایش داده می شود، این چنین نیست.
ممنون از همه دوستن

exlord
شنبه 20 فروردین 1390, 20:52 عصر
در این حالت base با this هیچ فرقی نداره و تغییر دادن پراپرتی های base تاثیری در فرم های جدید ساخته شده نداره ... وقتی شما base رو تغییر میدین فقط تو همسن instance ای که ساخته شده تاثیر میزاره نه توی کد های اصلی فرم base ... در صورتی که وقتی فرم جدیدی میسازین با همون کد های قبلی ساخته میشن ...
برای کاری که میخواین انجام بدبن باید مشخصات فرم base رو توی setting ذخیره کنین ... و تغییرات رو هم باید قبل از new کردن فرم جدید انجام بدین ... در این صورت با تغییر مشخصات فرم base در setting فرم های جدید با مشخصات جدید ساخته میشن ...

vof.ir
پنج شنبه 11 اسفند 1390, 15:56 عصر
با سلام. بله درست می فرمایید. از لحاظ فنی همین مطلبی که فرمودید را بهش رسیدم. ممنونم

nathan
پنج شنبه 25 اسفند 1390, 00:41 صبح
با تشكر از شما هر دو دوستان عزيز يك سئوال هم من در اينجا دارم من هم مثل شما يك فرم والد دارم و بقيه فرمها رو از فرم والد ارث بري مي كنم. در فرمهاي والد چند رويداد و متد و حتي property هست كه كاملاً يكسان هستند. واضح تر توضيح بدم اينه كه توي همه اين فرمهاي موروث رخدادهاي يكساني هست كه در همه اونا تكراريه.از اسم رخداد تا كد داخل اونا! حالا سئوال من اينجا اينه كه چطور ميشه به جاي اينكه توي هر فرم اين آيتمها رو تكرار كرد يكيش رو توي فرم Base بنويسيم و همون كار رو براي ما انجام بده. البته نا گفته نماند فرمهاي فرزند يا موروث داراي property هائي هستند كه از نظر نام مشترك هستند اما مقادير مختلفي دارند.