این لینک
http://www.oreilly.com/catalog/comdotnet.../ch10.html رو ببین . در مورد رجیستر کردن و اینها توش توضیح داده ( شاید بهتره خودت اول دستی رجیسترش کنی ) . متاسفانه من اطلاعات عمیقی در این زمینه ندارم !
اون چیزهایی هم که اضافه کردم فقط باعث میشه که اسمبلی ما قابل استفاده در سیستم های COM هم باشه .
اولی میگه که ریفرنسی برای این کلاس وجود نداره . خط دوم GUID شی COM رو مشخص میکنه یا مشخصه ای که در هنگام رجیستر شدن باید تو رجیستری نوشته بشه و خط سوم هم اجازه میده که توابع این کلاس قابل استفاده در سیستم های COM باشند !
سلام.
دستی هم که رجیستر نمیشه. ارور میده. هر کاریش میکنم سی شارپ رو نمیشه اورد تو ویبی
سلام.
من یه کامپوننت با .net نوشتم بردم تو ویبی6. فرض کن یه کلید تو کامپوننت من قرار داره. من میخوام از تو ویبی6 به پروپرتی های این کلید دسترسی داشته باشم. مثلا بتونم بک کالرش رو عوض کنم. ولی تو ویبی فقط کل اون یوزرکنترل رو میشناسه و اشیای روی یوزرکنترل رو نمیبینه.
میشه برای تک تک پروپرتی ها تو دات نت پروپرتی تعریف کرد که تو ویبی تو پروپرتی های کامپوننت نمایش داده بشه و میشه بهشون مقدار داد و مقدار مثلا بک کالر عوض میشه.
ولی من میخوام کاری کنم به طور اتوماتیک همه پروپرتی ها رو بشناسه. دیگه نشینم برای تک تکشون کد نویسی کنم.
فکر کنم راه حلش واسه #C رو پیدا کردم ( همچنین تمام property های کنترل ها هم قابل رویت در وی بی خواهند بود ) :
1 - اولش برو توی فایل AssemblyInfo.cs و مطمعن بشو خاصیت زیر بشکل داده شده وجود داره
کد:
[assembly: ComVisible(true)]
2- سمت راست توی کادر solution explorer روی اون آیتم properties دوبار کلیک میکنی تا صفحه properties باز بشه . توی عکس زیر برات مشخص کردم چه چیزهایی کجا باید چطور تنظیم بشن !
[
attachment=1028]
3 - با برنامه regasm.exe ( که اسمبلی رجیستر میکنه ) و میتونی توی مسیر SDK دات نت مثلا "C:\WINDOWS\Microsoft.NET\Frmaework\v2.0.50727" پیداش کنی ، میای و اسمبلی یا همون کامپوننت دات نتی خودت رو رجیستر میکنی . اونوقته که در وی بی توی لیست reference ها اسمش میاد و میتونی ازش استفاده کنی !!
سلام.
اول به خاطر راهنمایی هات ازت تشکر میکنم.
2 تا مشکل.
اول این که من تو پروپرتی که کانفیگوریشن رو میذارم رو Release وقتی کامپایل میکنم خودش دوباره میره رو Active (Debug)
دومم این که من میخوام کامپوننت تو لیست کامپوننت ها تو ویبی اضافه شه نه ریفرنس ها. چون میخوام اینترفیس باشه و ظاهرش هم معلوم باشه.
بعدش چطور میگی پروپرتی ها تو ویبی قابل دسترسی هست؟ وقتی تو ریفرنس اضافه بشه که دیگه اینترفیس نیست که بخواد پروپرتی داشته باشه. مثل یه تایپ یا کلاس میمونه.
سلام.
وقتی کامپوننت رو به صورت ریفرنس به پروژه ویبی اضافه میکنم میشه به همه ابجکت ها و اشیا رو کامپوننت و همچنین میشه به پروپرتی هاشون دسترسی داشت. ولی وقتی ویزیبل کامپوننت رو true میکنم رو فرم ظاهر نمیشه.
ولی وقتی با دستور control.add یه نمونه از ریفرنس به روی فرم میارم و ویزیبلش رو تورو میکنم رو فرم ظاهر میشه ولی نمیشه به هیچ کدوم از اشیا دسترسی داشت.
این مثال رو ببینید میتونید کاری کنید که این مشکل حل شه.
مستقیما از طریق خود شی a شما نمیتونی به خصوصیات دات نتی دسترسی داشته باشی بلکه باید از طریق شی object به خصوصیت های دات نتی دسترسی پیدا کنی . پس شما ابتدا باa .Visible = True کنترل خودت رو visible میکنی بعد برای دسترسی به خصوصیات دات نتی اینطوری عمل میکنی :
کد:
b = a.object.button1.Text
سلام.
بابا تو دیگه کی هستی. یه بار نشد یه سوال بپرسم جواب ندی.
ولی یه سوال دیگه پیش اومد شب میپرسم.
قربانت رفیق

سلام.
سوالی که دیروز گفتم شب میپرسم الآن مطرح میکنم.
یه مثال گذاشتم. ببینید. من برای این که به پروپرتی های اشیای کامپوننتم دسترسی داشته باشم خاصیت modifiers شون رو public میکنم. با این روش میشه پروپرتی های همه اشیای رو کامپوننت رو تغییر داد.
حتی اگه یه کامپوننت رو تو یه کامپوننت دیگه قرار بدیم با پابلیک کردن این خاصیت میشه پروپرتی های اشیای داخل اون کامپوننت رو هم تغییر داد.
مثالی که گذاشتم به خوبی مشخص میکنه چی میگم. (Test2.zip)
حالا من یه کامپوننت از نت گرفتم. مستقیم اوردمش تو ویبی دیدم نمیشه به پروپرتی هاش دسترسی داشت. بعد به یه کامپوننت دیگه اضافش میکنم و modifiers رو هم پابلیک میکنم. ولی باز هم تو ویبی نمیشه به پروپرتی هاش دسترسی داشت. این مشکل رو چطور حل کنم ؟ میگه object requred . مثالش رو هم همراه با خود کامپوننت گذاشتم. (Ques.zip)
سلام.
این مشکلم حل کردم. البته با یه کلک رشتی.
کلاس AGauge تو سورس dll از Control ویژگی به ارث میبرد که من با یه نغییر کوچیک این قسمت رو به UserControl تغییر دادم تا تو ویبی نمایان بشه و ظاهر گرافیکی هم داشته باشه. چون من تو ویبی به همه ویژگی ها دسترسی داشتم ولی فقط کامپوننت رو نمیتونستم ظاهر کنم که با این تغییر این مشکل حل شد. به این صورت.
public partial class AGauge : UserControl
حالا یه سوال دیگه. این تغییر مشکلی تو کارکرد کامپوننت ایجاد نمیکنه؟