PDA

View Full Version : customized form



setak
شنبه 02 دی 1385, 10:00 صبح
من یک فرم customized شده برای مثال فرم login دارم که می خواهم در تمام برنامه ها از این فرم استفاده کنم یعنی بتوانم این فرم را به تمام پروژه هام add کنم .اگر بخوام از کنترل استفاده کنم در نتیجه می توانم یک container داشته باشم که برای مثال حاوی lableها و textboxها ی فرم login باشد و در نتیجه می توانم این container را به روی فرمم drag کنم اما من می خوام به جای اینکار یک فرم customized شده را داشته باشم نه یک conatiner
لطفا من را راهنمائی کنید

leilav_1984
پنج شنبه 07 دی 1385, 11:08 صبح
می تونی یه کنترل کاملا انتزاعی بسازی ( یه dll )
یه ClassLibrary بساز و فرم مورد نظرت رو تو اون ایجاد کنی
مثلا :
اول به Refrenceهای پروژت System.Windows.Forms رو اضافه کن
بعد یه همچین کلاسی توش می سازی :


Imports System.Windows.Forms

Public Class LoginForm : Inherits Form
dim lblUsername as Label
lblUsername.width=80
.
.
.
Me.Controls.Add(lblUsername)
.
.
.
به این ترتیب واسه داشتن این فرم تو هر پروژه دیگه ای لازمه فقط این dll رو جز Refrenceهاش قرار بدی

البته می دونم همه تون اینا رو بلدین
من فقط جمع بندی کردم

problem
جمعه 08 دی 1385, 00:16 صبح
البته می دونم همه تون اینا رو بلدین
من فقط جمع بندی کردم کار بسیار خوبی کردید.
روش دوم هم که توی فیلم‌های آموزشی مایکروسافت دیدم اینه که فایل‌های مربوط به اون فرم رو drag می‌کنه drop‌ می‌کنه توی Project Explorer ویژوال استودیو.

leilav_1984
شنبه 09 دی 1385, 14:34 عصر
کار بسیار خوبی کردید.
روش دوم هم که توی فیلم‌های آموزشی مایکروسافت دیدم اینه که فایل‌های مربوط به اون فرم رو drag می‌کنه drop‌ می‌کنه توی Project Explorer ویژوال استودیو.

خواهش می کنم...
روشی که می فرمایید درسته...البته زمانیکه فقط خودمون بخوایم از اون کنترل استفاده کنیم
با روشی که من پیشنهاد کردم می تونین کنترل رو فقط با دادن فایل dll در اختیار دیگران (مثلا سایر اعضای تیم پروژه یا همکاراتون) قرار بدین که همه از یه کنترل استاندارد استفاده کنن ولی کدی هم که نوشتین لو نره :چشمک:

problem
یک شنبه 10 دی 1385, 19:19 عصر
البته من نمی‌فهمم که چرا باید آدم به اعضای تیم پروژه کنترلی بده اما نخواد سورسش لو بره، چون به هر حال همه هم تیمی هستند! اما لابد تو مملکت ما برای این هم توجیهی هست، همون‌طور که واسه خیلی چیزا توجیه هست! (ناراحت نشید اینو می‌گم.)
ضمن این که اگر واقعاً اون dll که شما می‌فرمایید، صرفا با کامپایل کردن کد به دست اومده، خوب این که فکر کنید سورسش نمی‌دید و لو نمی‌رید سخت غلطه، چون حتی با MS ILD که همراه خود VS‌ هست هم می‌شه که کرکش کرد و سورس رو دید!

miimii
یک شنبه 06 اسفند 1385, 14:08 عصر
ببخشید فکر می کنم که موضوع مدتها قبل مطرح شده ولی من تازه با این مسئله مواجه شدم.
من یه فرم login دارم که کلی کدهای کنترل login شدن نیز برای آن نوشتم.می خواستم این فرم با تمام کدهایش را در پروژه های دیگر استفاده کنم.
1) یکی از دوستان کنترل Container را پیشنهاد کردن.اکر من container را در یک فرم دیگر darg& drop کنم آیا کدها نیز به آن فرم منتقل می شوند؟
2)روش بهتری که دوستان پیشنهاد داده بودند این بود که ازClassLibrary استفاده کنم.ولی منظور ایشان را متوجه نشدم.
فکر کنم منظور ایشان این بود که در solution explorer بر روی پروژه RClick کرده و Add Class را انتخاب کنیم.
3)که اگه منظور ایشان را درست متوجه شدم نمیفهمم که فرم را چگونه باید داخل آن تعریف کنم.چون همه کد هستند و design ندارد. من چگونه می توانم کدهای کنترل login شدن را در آن قرار دهم؟
4)و اخرین سوال اینکه من فرمم را ساختم تمام شده است.بدون هیچ کلاسی.چگونه می توان روش معکوس را طی کنم.

سوالاتم خیلی زیاد بود.ممنون می شوم اگه من را راهنمایی کنید.

ghafoori
یک شنبه 06 اسفند 1385, 18:58 عصر
روش بهتری که دوستان پیشنهاد داده بودند این بود که ازClassLibrary استفاده کنم.ولی منظور ایشان را متوجه نشدم.
منظور دوستان یک پروژه ClassLibrary است نه یک کلاس جدا

که اگه منظور ایشان را درست متوجه شدم نمیفهمم که فرم را چگونه باید داخل آن تعریف کنم.چون همه کد هستند و design ندارد. من چگونه می توانم کدهای کنترل login شدن را در آن قرار دهم؟
لازم نیست به این کارها نیست شما ابتدا یک پروژه اپلیکیشن ایجاد کنید بعد که کدتان را نوشتید داخل تنظیمات برنامه نوع پروژه را از اپلیکیشن به ClassLibrary تغییر دهید و در نهایت شما یک dll خواهید داشت و می توانید در همه جا از ان استفاده کنید

miimii
دوشنبه 07 اسفند 1385, 08:44 صبح
ممنون از راهنماییتان.
من output پروژه را از application به Class Library تغییر دادم.پروژه از نوع exe به dll تغییر پیدا کرد.
ولی یه مشکل اینکه در سه folder :
Release، Debug، Bin این فایل dll به وجود آمده است. من از کدام باید استفاده کنم؟
و اگر من بخواهم در پروژه های دیگر از ان فایل dll استفاده کنم اگر فقط به قسمت refrence های پروژه فایل dll را اضافه کنم کافی است؟

با تشکر فراوان

ghafoori
دوشنبه 07 اسفند 1385, 14:45 عصر
بهتر است از dll پوشه Release استفاده کنید
چون برنامه شما یک پنجره است می توانید ان را به toolbox خود اضافه کنید و مثل کنترلهای openfiledialog از ان بهره ببرید

miimii
دوشنبه 07 اسفند 1385, 15:16 عصر
منظورتان از یک پنجره، یک فرم است؟
حالا اگه از یکی بیشتر باشد دیگه نمیشه از این روش استفاده کرد؟