PDA

View Full Version : آموزش: ساخت کامپوننت و دی ال ال (DLL & COMPONNENT)



eyes_shut_number1
شنبه 07 اردیبهشت 1387, 12:31 عصر
سلام دوستان!
امید وارم کمک کنه و کم اشکال باشه
کامپوننت چیه؟ کامپوننت یه قسمت قابل استفاده مجدد (یا همون ری یوز ایبل) که قسمتی از کد های کتابخونه میشه.
این کد با ارث بری قابل استفاده مجدد یه نکته ای که نباید فراموش بشه اینه که نام کامپوننت هاتون باید تا حد امکان کوچیک باشه و نشون بده که این کامپوننت میخواد چیکار کنه.

خوب در ابتدا از منوی فایل نیو پروجکت رو انتخاب کنید و از قسمت زبان وی بی ویندوز کنترل لایبراری رو انتخاب کنید

File->New Project-> C# -> Windows Control Library

یه پروژه باز شد که ضفحه اولش کوچیکه! فرض کنید میخواین یه تکسباکس درست کنید که فقط عدد بگیره و اگه حرف وارد شد یه اررور پرووایدر (Error Provide)به کاربر اعلام خطا کنه.همچنین رنگ پس زمینه با فکوس شدن و از دست دادن تغییر کنه!؟
فقط کافیه این کد رو بعد از اضافه کردن یک تکس باکس و یه اررور پرووایدر به کد ها تون اضافه کنید


خوب بیشتر کار تموم شد!
حالا وقتشه که روی بویلد (Build)رفته و پروژه رو بویلد کنید WindowsControlApplication1Build->Build
اگه برین توی فولدری که پروژه رو ذخیره کردین وارد پوشه بین (bin)شده و بعد وارد پوشه ریلیز (release)بشین ائونجا یه فایل با پسوند دی ال ال میبینید
WindowsControlLibrary1->Bin->Release->WindowsControlLibrary1.dll


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace WindowsControlLibrary1
{
publicpartialclassUserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
privatevoid textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!((int)e.KeyChar >= 48 && (int)e.KeyChar <= 57))
{
e.Handled = true;
errorProvider1.SetError(textBox1, "شما نمیتوانید حرف وارد کنید");
}
else { errorProvider1.Clear(); }
}

}
}

این اسمها برای پروژه منه اگه شما اسم پروژه رو تغییر دادین طبیعتااسم ها هم تغییر مینند. این فایل دی ال ال است که شما ساختید
حالا یه پروژه دیگه باز کنید
File->New Project->C#->Windows Application
برید روی تولباکس (ToolBox)و کلیک راست کنید و Choose Items ... رو اتخاب کنید!
صفحه ای باز میشه روی دکمه بروز کلیک کنید و برید توی او پروژه ای که دی ال ال ساختید و فایل دی ال ال رو اضافه کنید و بعد دکمه اوکی رو بزنید یک شکل چرخ دنده که ایکن دیفالت(Default) هست اضافه میشه. اون رو درگ دراپ(Drag & Drop) کنید روی فرمتون همین بود!
اینم ساخت یه دی ال ال ساده!
به سادگی میتونید از این راه ایده بگیرید کامپننت های خفن درست کنید
خوبه که بدونین که کاپننت نویسی درامد بالای داره(به شرط حرفه ای بودن) امید وارم تونسته باشم به سادگی این روش رو گفته باشم
اشکال زیاد داره به بزرگی خدتون ببخشید

eyes_shut_number1
شنبه 07 اردیبهشت 1387, 12:34 عصر
بازم سلام
توی پست اول امودیم و یه یوزر کنترل درست کردیم!
این دفه میخوایم یه دی ال ال درسا کنیم بدون گرافیک!
کاره خاصی نمیکنه .
دیدن مثلا برای یه کلاس از یه تابع ورودی میفرستین و یه خروجی بهتون میده؟
الانم میخوایم یه چیز تو همون مایه هارو انجام بدیم!
خوب ویزوال استادیو رو باز کنید و از روی منوی نیو پرجکت – کلاس لایربراری رو انتخاب کنید. File ->New Project ->Class Library ا
گه توجه کنید دیگه توا باکسی ندارید که بخواید کنترل اضافه کنید و فقط یه کلاس دارید که توش میتونید تابع اضافه کنید.
این کد رو اضافه کنید به کلاستون این کد روز و ماه و سال رو میگیره و اونوبه حروف تبدیل میکنه!چیزه راحتیه فقط یه عنوان نمونه بود باز هم پروژه اون رو سیو کنید و اون رو بسازید.
Code Added In end Of Post
Save & Build Project اگه برید توی پوشه برنامتون و توی بین و بعد تیو ریلیز
ClassLibrary1-Bin-Release- X.dll
یه فایل دی ال ال به اون اضافه شده.
حالا یه پروژه جدید باز کنید از نوع ویندوز اپلیکیشن روی سولوشن اکسپلورر کلیک راست کنید و اد ریفرنس رو انتخاب کنید
Solution Explorer – Add Reference –Browse
بعد برید و اون فایل دی ال ال رو اد کنید. و توی فرمتون این کد که معلومه چیه رو وارد کنید

ClassLibrary1.F09122063891 fr = newClassLibrary1.F09122063891();
Messagebox.show( fr.DateToFarsi("1384.2.3",”.”));

کدش وی بی هست از اینجا بگیرید (http://barnamenevis.org/forum/attachment.php?attachmentid=16736&d=1209024025)

eyes_shut_number1
شنبه 07 اردیبهشت 1387, 12:35 عصر
سلام دوستان!
یه آموزش خوب برای درست کردن SmartTags برای دوستانی که UserControl درست کردن و میخواند Costomize کنندش
این مقاله نوشته آقای حامد مصافی هست
از همین سایت فکر کنم DL کردمش!
از اینجا دانلود کنید (انجا کلیک کن) (http://rapidshare.com/files/110474728/SmartTag.rar.html)

razavi_university
شنبه 07 اردیبهشت 1387, 16:40 عصر
دوست عزیز ممنون از زحمتی که می کشید
اگر لطف کنین و به #C بنویسین خیلی عالی میشه

eyes_shut_number1
شنبه 07 اردیبهشت 1387, 20:25 عصر
باشه چشم!
شرمنده وقت نکردم با همون کد وی بی که نوشته بودم گذاشتم
البته قسمت دوم رو
در اولین time میذارمش با c#

eyes_shut_number1
شنبه 14 اردیبهشت 1387, 11:56 صبح
دوستان پیشناهادی برای ادامه تاپیک ندارن؟

ali_mp64
شنبه 14 اردیبهشت 1387, 23:29 عصر
سلام دوستان!
امید وارم کمک کنه و کم اشکال باشه
کامپوننت چیه؟ کامپوننت یه قسمت قابل استفاده مجدد (یا همون ری یوز ایبل) که قسمتی از کد های کتابخونه میشه.
این کد با ارث بری قابل استفاده مجدد یه نکته ای که نباید فراموش بشه اینه که نام کامپوننت هاتون باید تا حد امکان کوچیک باشه و نشون بده که این کامپوننت میخواد چیکار کنه.

خوب در ابتدا از منوی فایل نیو پروجکت رو انتخاب کنید و از قسمت زبان وی بی ویندوز کنترل لایبراری رو انتخاب کنید

File->New Project-> C# -> Windows Control Library

یه پروژه باز شد که ضفحه اولش کوچیکه! فرض کنید میخواین یه تکسباکس درست کنید که فقط عدد بگیره و اگه حرف وارد شد یه اررور پرووایدر (Error Provide)به کاربر اعلام خطا کنه.همچنین رنگ پس زمینه با فکوس شدن و از دست دادن تغییر کنه!؟
فقط کافیه این کد رو بعد از اضافه کردن یک تکس باکس و یه اررور پرووایدر به کد ها تون اضافه کنید


خوب بیشتر کار تموم شد!
حالا وقتشه که روی بویلد (Build)رفته و پروژه رو بویلد کنید WindowsControlApplication1Build->Build
اگه برین توی فولدری که پروژه رو ذخیره کردین وارد پوشه بین (bin)شده و بعد وارد پوشه ریلیز (release)بشین ائونجا یه فایل با پسوند دی ال ال میبینید
WindowsControlLibrary1->Bin->Release->WindowsControlLibrary1.dll


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace WindowsControlLibrary1
{
publicpartialclassUserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
privatevoid textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!((int)e.KeyChar >= 48 && (int)e.KeyChar <= 57))
{
e.Handled = true;
errorProvider1.SetError(textBox1, "شما نمیتوانید حرف وارد کنید");
}
else { errorProvider1.Clear(); }
}

}
}

این اسمها برای پروژه منه اگه شما اسم پروژه رو تغییر دادین طبیعتااسم ها هم تغییر مینند. این فایل دی ال ال است که شما ساختید
حالا یه پروژه دیگه باز کنید
File->New Project->C#->Windows Application
برید روی تولباکس (ToolBox)و کلیک راست کنید و Choose Items ... رو اتخاب کنید!
صفحه ای باز میشه روی دکمه بروز کلیک کنید و برید توی او پروژه ای که دی ال ال ساختید و فایل دی ال ال رو اضافه کنید و بعد دکمه اوکی رو بزنید یک شکل چرخ دنده که ایکن دیفالت(Default) هست اضافه میشه. اون رو درگ دراپ(Drag & Drop) کنید روی فرمتون همین بود!
اینم ساخت یه دی ال ال ساده!
به سادگی میتونید از این راه ایده بگیرید کامپننت های خفن درست کنید
خوبه که بدونین که کاپننت نویسی درامد بالای داره(به شرط حرفه ای بودن) امید وارم تونسته باشم به سادگی این روش رو گفته باشم
اشکال زیاد داره به بزرگی خدتون ببخشید



من اين كارو انجام دادم و component ساخته شده رو توي فرمم انداختم ولي اين textbox ي كه ساختم خاصيت text نداره !؟

eyes_shut_number1
یک شنبه 15 اردیبهشت 1387, 08:00 صبح
خاصیت شو که داره!
اما فقط میتونی توش عدد بزنی
این یه Numeric Textbox هستش

amironline
یک شنبه 15 اردیبهشت 1387, 11:56 صبح
خاصیت شو که داره!
اما فقط میتونی توش عدد بزنی
این یه Numeric Textbox هستش

چطوري ميشه تو فرم به Textbox داخل كنترل ساخته شده دسترسي داشت؟

rezaversace
دوشنبه 15 شهریور 1389, 11:11 صبح
چطوري ميشه تو فرم user control به رویدادهای اشیاء داخل كنترل ساخته شده دسترسي داشت؟(البته منظورم زمانی هستش که توی یک پروزه ویندوزی بخواهیم ازش استفاده کنیم)
--------------------
چطوري ميشه تو فرم user control به رویدادهای اشیاء داخل كنترل ساخته شده دسترسي داشت؟(البته منظورم زمانی هستش که توی یک پروزه ویندوزی بخواهیم ازش استفاده کنیم)1
--------------------
چطوري ميشه تو فرم user control به رویدادهای اشیاء داخل كنترل ساخته شده دسترسي داشت؟(البته منظورم زمانی هستش که توی یک پروزه ویندوزی بخواهیم ازش استفاده کنیم)2

rezaversace
دوشنبه 15 شهریور 1389, 12:24 عصر
من یک dll طراحی کردم که توش فقط یک button وجود داره، میخوام وقتی تو یک پروژه ویندوزی ازش استفاده می کنم بتونم برای رویداد button که داخل user control هست کد نویسی کنم، آیا این کار شدنیه؟