PDA

View Full Version : سوال: دادن یک استایل مشخص به تمامی فرم ها در سی شارپ



php_love
پنج شنبه 25 دی 1393, 09:36 صبح
سلام دوستان

من تازه وارد دنیای برنامه نویسی .net شدم امیدوارم مثل PHP همون قدر لذت بخش باشه ...

می خواستم بدونم چطور می تونم یه استایل مشخص مثل اندازه فونت ها , اندازه دکمه ها و ... رو جایی ست کنم که بقیه فرم ها از اون ارث بری داشته باشن و من فقط یک بار و فقط یک جا اون کدها رو نوشته باشم ؟؟ (نمی خوام خودم کلاسی برای این موضوع تعریف کنم)

SabaSabouhi
پنج شنبه 25 دی 1393, 11:30 صبح
سلام
اگه از Componentهای موجود استفاده کنید، بیشترشون امکان Theme رو دارن. دقیقاً چیزی هست که شما نیاز دارین.
تو ایران DevExpress و Telerik از همه رایج‌تر هستن.

صبا صبوحی

Mahmoud Zaad
پنج شنبه 25 دی 1393, 11:48 صبح
سلام
من فکر می کنم منظورشون چیزی شبیه Masterpage در asp.net هست.
شما می تونید یه فرم بسازید با فونت و رنگ و اندازه و ... مشخص مثلا به اسم frmTheme، بعد زمانیکه فرم جدید به پروژه اضافه می کنید اگه به قسمت کدنویسی اش مراجعه کنید بالای فرم یه خط شبیه زیر می بینید(کلمه Form اونجا UnderLine نداره):


public partial class Form1 : Form

خب در اینجا Form1 از Form ارث بری میکند حالا برای اینکه از فرم تم شما یعنی frmTheme ارث بری کنه، کافیه به جای کلمه Form (که زیرش خط کشیدم)، بنویسید: frmTheme.

php_love
پنج شنبه 25 دی 1393, 21:37 عصر
تمام فرم هام به صورت پیش فرض از کلاس Form ‌ارث بری کردن ... نمیشه تو همون کلاس Form‌اون تغییری که نیاز دارم رو ایجاد کنم ؟؟
اگه میشه بفرمائید دقیقا چطوریه چون وقتی رجوع میکنم به اون کلاس یه سری چیزها که واسم نامشخصه میبنم , یکسری توابع که همشون get و set دارن میشه در مورد اینا توضیح بدین و بفرمائید من دقیقا کجا می تونم این تغییرات رو اعمال کنم تا به کل فرمها ازش تاثیر بگیرن

Mori Bone
پنج شنبه 25 دی 1393, 22:12 عصر
سلام. شما نمی تونید یه کلاس رو تغییر بدید. به جای اون می تونید از کلاس ارث بری کنید و تغییراته لازم رو بهش بدید

Mahmoud Zaad
جمعه 26 دی 1393, 11:46 صبح
تمام فرم هام به صورت پیش فرض از کلاس Form ‌ارث بری کردن ... نمیشه تو همون کلاس Form‌اون تغییری که نیاز دارم رو ایجاد کنم ؟؟
اگه میشه بفرمائید دقیقا چطوریه چون وقتی رجوع میکنم به اون کلاس یه سری چیزها که واسم نامشخصه میبنم , یکسری توابع که همشون get و set دارن میشه در مورد اینا توضیح بدین و بفرمائید من دقیقا کجا می تونم این تغییرات رو اعمال کنم تا به کل فرمها ازش تاثیر بگیرن
آره ظاهراً نمیشه تغییرش داد، هر چی Go To Definition میزنی میره تو یه کلاس دیگه، من تا نزدیکای cpu رفتم دیگه منصرف شدم!!!
یک راه دم دستی اینه: حالا مگه چند تا فرم داری؟! برای همه فرمها اسم Form رو به اسم مورد نظرت تغییر بده. و ازین به بعد اگه فرم جدید ساختی از همون اول بگو از فرم مورد نظرت ارث بری کنه. البته این فقط برای خود فرم کار میکنه. برای سایر کنترل ها مثل باتن و تکست باکس و ... هم باید کلاس جدید تعریف کنی و متودها و خاصیتهای خودت رو override یا تعریف کنی.

SabaSabouhi
شنبه 27 دی 1393, 07:45 صبح
سلام
شما نمی‌تونی کلاس Form رو تغییر بدی. برای رسیدن به منظوری که داره تو WinForm فقط دو راه وجود داره:
1. می‌تونی یه کلاس بنویسی مثلاً MyForm و تمام فرم‌ها بجای Form از MyForm ارث بگیرن. ( که تو پست اول گفتی این رو نمی‌خوای )
2. راه دیگه هم استفاده از Theme هست، به شرطی که فقط مساله‌ی ظاهر فرم ( و نه عملکردش ) برات اهمیت داشته باشه.

اگه از Wpf استفاده کنی، امکانات و انتخاب‌های بیشتری برای این جور کارها خواهی داشت.

صبا صبوحی