PDA

View Full Version : سوال: تبدیل یک فرم به DLL



sareham238
دوشنبه 11 خرداد 1394, 17:22 عصر
سلام یه سوال داشتم....
من یک فرم دارم و داخل اون یک دکمه با event کلیک ایجاد کردم .... حالا میخوام این فرم رو به DLL تبدیل کنم تا هر موقع به اون فرم احتیاج داشتم این DLL رو معرفی کنم و اون فرم رو با دکمه و event برای من ایجاد کنه ...

حالا نمی دونم اصلا چنین کاری میشه انجام داد ...
یا با DLL نمیشه با یه چیز دیگه میشه ...

ممنون میشم کمکم کنید.

Javad_raouf
دوشنبه 11 خرداد 1394, 20:38 عصر
سلام
برای ساخت DLL از منوی File، گزینه New Project
گزینه ClassLibrary رو انتخاب کنید و بعد از انتخاب نام برای DLL گزینه OK رو بزن
حالا هر چی دوست داری کلاس و تابع تعریف کن تا توی DLL باشه
برای افزودن فرم به DLL هم مثل افزودن فرم به پروژه معمولی رفتار کن و روی نام پروژه راست کلیک کن و گزینه ADD و سپس Windows Form رو انتخاب کنید و بقیه ماجرا
بعد از آماده شدن DLL از منوی BUILD گزینه Build Solution رو بزن تا DLL در پوشه Bin و پوشه Debug ساخته بشه
---------------
حالا توی پروژه اصلیت که می خوای از این DLL استفاده کنی باید این DLL رو AddRefrence کنی تا بتونی از کلاس ها و توابعش استفاده کنی
اگرم می خوای یک فرم بسازی که از فرم داخل DLL ارث بری کنه
روی نام پروژه کلیک کن و از منوی Add گزینه windows form رو انتخاب کن و در پنجره باز شده باز از ایتم های سمت چپ گزینه Windows Forms و از آیتم های سمت راست گزینه Inherited Form رو انتخاب کن و پس از نوشتن نام فرم بر روی Add کلیک کن یک پنجره جدید باز میشه روی Browse کلیک کن و DLLی که ساختی رو انتخاب کن. خواهی دید که نام فرمی که در DLL ساختی در لیست بالا نشون داده میشه اون رو انتخاب کن و بر روی Ok کلیک کن
آخیش تموم رفت:لبخند:

ghasem110deh
دوشنبه 11 خرداد 1394, 21:53 عصر
تشکر از آقای رئوف بابت توضیحات کامل شون :)
البته نیازی الان فرم رو از اول بصورت dll بسازی ... (ظاهرا فرم رو ساختی)
خروجی برنامه winform رو هم که به calssLibrery تغییر بدی و یه بار پروژه build کنی ، خروجی برنامه ویندوزیتون یه فایل dll میشه :)

sareham238
سه شنبه 12 خرداد 1394, 11:22 صبح
یه سوال دیگه ممنون میشم این هم کامل جواب بدید ...

وقتی من فایل dll رو به فرم تبدیل میکنم تمام property های فرم lock میشه ... راهی وجود داره که همه یا بعضی از این property ها unlock باشه ...

Javad_raouf
شنبه 16 خرداد 1394, 10:41 صبح
پروپرتی های فرم که Lock نمی شند
بلکه پروپروتی های کنترل های درون فرم Lock میشن
دلیلشم اینه که کنترل های به صورت Private تعریف شدن
شما هر کنترلی که دوست داری قابل جا به جایی و تغییر باشه توی پروژه
ClassLibrary که داری فرم رو میسازی روی کنترل کلیک کن و در پروپرتی هاش قسمت Modifie رو بزار روی Public البته روی Protected هم بزاری خوبه امنیتشم بالاتره اگه دوست داشتی سرچ کن ببین فرق Public با Protected چیه

sabz12
چهارشنبه 21 مرداد 1394, 08:55 صبح
من دقيقا يك فرم ساختم البته پروژه چنتا فرم داره ولي يكي از فرم هام كه لوگين است مي خوام dll كنم ولي متوجه نشدم اين فرم را چطور تبديل كنم می خوام از روش سنتی کپی وپست استفاده کنم.
در مورد(
خروجی برنامه winform رو هم که به calssLibrery تغییر بدی
) این را پیدا کردم
http://barnamenevis.org/showthread.php?446930-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-portable-%D9%88-dll%D8%9F&highlight=dll+%D9%81%D8%B1%D9%85

فکر کنم همون کپی پیست دست باشه
راستی یک از کلاسها را تو dll را internal قرار دادم ولی تو پروژه اصلی بعد از رفرنس کردن نمی بینمش و new نمیشه مگر در dll برای امنیت نباید internal قرار داد کلاسها را ؟ ولی پابلیک راحت می یاد؟؟
با تشكر از دوستان

محمد رضا فاتحی
چهارشنبه 21 مرداد 1394, 09:46 صبح
توی تنظیمات پروژه
134172

sabz12
چهارشنبه 21 مرداد 1394, 11:25 صبح
تصور من این که dll امنیتش بالاتر هست پس میشه کل برنامه را dll کرد و یک فرم دیگه ساخت و از dll که رفرنس کردیم استفاده کنیم و در این حالت پروژه را تمام کنیم اصلا درست این برداشت؟؟حالا ستاپ هم خواست بسازیم؟؟!! ببخشید تازه کارم و نمی دونم چجوری پروژه را جمع و جور کنم

Reza-HNA
چهارشنبه 21 مرداد 1394, 12:20 عصر
تصور من این که dll امنیتش بالاتر هست پس میشه کل برنامه را dll کرد و یک فرم دیگه ساخت و از dll که رفرنس کردیم استفاده کنیم و در این حالت پروژه را تمام کنیم اصلا درست این برداشت؟؟حالا ستاپ هم خواست بسازیم؟؟!! ببخشید تازه کارم و نمی دونم چجوری پروژه را جمع و جور کنم

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

masoud sh
چهارشنبه 21 مرداد 1394, 14:54 عصر
یه سوال
ینی سه تا سوال:لبخند:
وقتی یه dll میسازیم و مثلا توش چندتا کلاس با متدهای خاص خودش تعریف میکنیم بعد که میخوایم تو یه پروژه ازش استفاده کنیم باید تو رفرنسا ادش کنیم فقط؟؟؟
برای استفاده از کلاساش باید نیم اسپیسشا هم یوزینگ کنیم؟؟
و دیگه اینکه برا جابجایی برنامه باید اون فایل dll کنار خروجی پروژه باشه یا وقتی تو رفرنسا اد کردیم دیگه نیازی به این کار نیس؟

sabz12
چهارشنبه 21 مرداد 1394, 15:08 عصر
یه سوال
ینی سه تا سوال:لبخند:
وقتی یه dll میسازیم و مثلا توش چندتا کلاس با متدهای خاص خودش تعریف میکنیم بعد که میخوایم تو یه پروژه ازش استفاده کنیم باید تو رفرنسا ادش کنیم فقط؟؟؟
برای استفاده از کلاساش باید نیم اسپیسشا هم یوزینگ کنیم؟؟
و دیگه اینکه برا جابجایی برنامه باید اون فایل dll کنار خروجی پروژه باشه یا وقتی تو رفرنسا اد کردیم دیگه نیازی به این کار نیس؟

با اجازه اساتید و تشکر که تجربیات خود را در اختیار ما می زارند
تا اونجا که من می دونم
1 باید رفرنسا ادش کنیم
2 اگر نیم اسپیسشا هم نام پروژه باشه لازم نیست
3 فکر کنم باید فایل dll کنار خروجی پروژه باشه

masoud sh
چهارشنبه 21 مرداد 1394, 16:02 عصر
پس چرا من هرکار میکنم نمیشه؟؟
مراحلا میگم دوستان بگید کجاشا اشتباه کردم
یه کلاس با چندتا متد داخلش ساختم و بصورت dll خروجی گرفتم
توی یه پروژه دیگه که از اون متدا خواستم استفاده کنم اون فایل dll را به رفرنس های پروژه ام ادد کردم
ولی نه نیم اسپیس اون dll را میشناسه که یوزینگ کنم و نه دسترسی به کلاسش دارم

sabz12
چهارشنبه 21 مرداد 1394, 18:31 عصر
من خودم تازه کارم تا جای که میدونم مراحلت درست فقط داخلDLL کلاس ها را public کن دوباره rebuid... کن و دوباره رفرس را ادد کن .واقعا همه جا نوشته
internal کنید ولی برای من جواب نمیده:ناراحت:

masoud sh
پنج شنبه 22 مرداد 1394, 09:25 صبح
داخلDLL کلاس ها را public کن

مرسی درست شد
برا منم فقط با public جواب داد با internal نشد :|

sabz12
شنبه 24 مرداد 1394, 16:49 عصر
Inherited Form کجاست پیداش نمی کنم من visual 2010دارم لطفا یک عکس از
Inherited Form بگزارید
من یک فرم ساختم ddl کردم و ادرفرنسش هم کردم می خوام یک فرم بسازم و از فرم dll ارثبری کنه ولی نمی دونم چطور این کار را بکنم
با تشکر از توجه شما