PDA

View Full Version : اعمال تغييرات در كامپوننت از قبل ساخته شده



ali_kolahdoozan
پنج شنبه 26 اردیبهشت 1387, 15:39 عصر
با سلام برهمه

وقتي كامپوننتي ميسازيم كه از يك كلاس مثلا textbox ارث بري كرده و آنرا مثلا روي يك فرم قرار ميدهيم . اگر تغييري در source آن كامپوننت بدهيم باز هم آنهايي كه قبلا روي فرم قرار گرفته اند با property هاي قبلي كار خواهند كرد اما جديدها نه عوض شدن يعني اونهايي كه بعد از تغيير ميزاريم روي فرم موردي ندارند . چه بايد كرد كه تغييرات روي قبليها هم اعمال بشه .باrebuild و ... حل نشد

رضا عربلو
پنج شنبه 26 اردیبهشت 1387, 16:15 عصر
اگر منظورتان را درست فهمیده باشم شما می خواهید پراپرتی یک TextBox را تغییر دهید در این صورت می توانید از کلمه کلیدی new و یا override در تعریف کنترل تان استفاده کنید. مثلاً


public new bool ReadOnly
{
get
{
return base.Readonly;
}
set
{
base.Readonly=value;
}
}

ali_kolahdoozan
پنج شنبه 26 اردیبهشت 1387, 17:06 عصر
اصلا منظورم اين نبود .

رضا عربلو
پنج شنبه 26 اردیبهشت 1387, 22:24 عصر
اگر منظورتان این است که تغییراتی که در سورس تان ایجاد می کنید اعمال نمی شوند بهتر است شاخه obj در محل پروژتان را حذف و دوباره پروژه تان را کامپایل کنید.

Mahdi.Kiani
پنج شنبه 26 اردیبهشت 1387, 22:33 عصر
با سلام برهمه

وقتي كامپوننتي ميسازيم كه از يك كلاس مثلا textbox ارث بري كرده و آنرا مثلا روي يك فرم قرار ميدهيم . اگر تغييري در source آن كامپوننت بدهيم باز هم آنهايي كه قبلا روي فرم قرار گرفته اند با property هاي قبلي كار خواهند كرد اما جديدها نه عوض شدن يعني اونهايي كه بعد از تغيير ميزاريم روي فرم موردي ندارند . چه بايد كرد كه تغييرات روي قبليها هم اعمال بشه .باrebuild و ... حل نشد

آدرس refrence در پروژه مقصد باید همون جایی باشه که کامپوننت ساخته میشه.. ولی رهح بهتر اینه که :

اگر اون کامپوننت به عنوان یک پروژه در کنار پروژه اصلی باشه، و پروژه مقصود ارجاعی به این پروژه
داشته باشه تغییرات اعمال میشه.. در واقع یک solution با دو project

یا اینکه پس از تغییرات ، refrence را پاک کنید و به dll جدید refrence و سپس rebuild کنید

ali_kolahdoozan
جمعه 27 اردیبهشت 1387, 14:23 عصر
رفرنس نيست . يك كلاسش كردم توي پروژم اما مثلا توي متد سازنده گفتم رنگ كنترل آبي باشه و بعد چند تا ازش گزاشتم روي فرم . حالا رفتم توي متد سازنده و رنگ و كردم قرمز اما قبلها همون آبي موندن ولي جديدها نه آنهايي كه بعد از تغيير روي فرم بزارم ok هستن

linux
جمعه 27 اردیبهشت 1387, 15:05 عصر
رفرنس نيست . يك كلاسش كردم توي پروژم اما مثلا توي متد سازنده گفتم رنگ كنترل آبي باشه و بعد چند تا ازش گزاشتم روي فرم . حالا رفتم توي متد سازنده و رنگ و كردم قرمز اما قبلها همون آبي موندن ولي جديدها نه آنهايي كه بعد از تغيير روي فرم بزارم ok هستن

از منوی build و clean .... و بعد دوباره برنامه را اجرا کنید.

ali_kolahdoozan
جمعه 27 اردیبهشت 1387, 15:28 عصر
گفتم كه اين كارها جواب نداده

mohammed
پنج شنبه 30 خرداد 1387, 09:59 صبح
آقای کلاهدوزان فکر کنم بدانم مشکل شما چیست: احتمالا کامپوننت را که در فرم قبلا انداخته ای برایش در فرم کد تولید شده است. مثال می زنم:

فرض کن رنگ یک User Control را آبی می کنی. بعد آنرا می اندازی در فرم. درون فرم یک خط در InitializeComponent تولید می شود که مثلا myControl.BackColor = Color.Blue

حالا اگر رنگ کنترل را قرمز کنی، از این به بعد سورس تولید شده در فرم شما برای کنترلهای جدیدی که در فرم می اندازی قرمز خواهد بود اما قبلی ها کما کان آبی هستند. اگر حدس من درست است بگو تا راه حل پیشنهادی را بگویم.

ali_kolahdoozan
پنج شنبه 30 خرداد 1387, 10:05 صبح
آقای کلاهدوزان فکر کنم بدانم مشکل شما چیست: احتمالا کامپوننت را که در فرم قبلا انداخته ای برایش در فرم کد تولید شده است. مثال می زنم:

فرض کن رنگ یک User Control را آبی می کنی. بعد آنرا می اندازی در فرم. درون فرم یک خط در InitializeComponent تولید می شود که مثلا myControl.BackColor = Color.Blue

حالا اگر رنگ کنترل را قرمز کنی، از این به بعد سورس تولید شده در فرم شما برای کنترلهای جدیدی که در فرم می اندازی قرمز خواهد بود اما قبلی ها کما کان آبی هستند. اگر حدس من درست است بگو تا راه حل پیشنهادی را بگویم.


مشگل همين است . اما نمي خواهم كدهاي بعد از گذاشتن روي فرم را تغيير بدهم . بايد اين كامپوننت مشگلش حل بشه

gdevnb
پنج شنبه 30 خرداد 1387, 10:35 صبح
سلام
اگه کنترل رو به صورت یه dll درآورده بودید و به پروژه اضافش می کردید این دردسرها رو نداشتید.

ali_kolahdoozan
پنج شنبه 30 خرداد 1387, 15:36 عصر
1- فرقي نداره
2- صورت مسئله رو پاك كردن فايده اي نداره