PDA

View Full Version : مبتدی: نحوه تعریف Public Property در WindowsControlLibrary برای یک کنترل



aftabeshargh
چهارشنبه 24 اسفند 1390, 11:50 صبح
سلام
1- بعد از ساخت یک dll در windowscontrollibrary که شامل چند تا لیبل و تکست باکس میشه " بعد از اضافه کردن این dll به پروژه های معمولی " حالا چطور میشه در پروژه ای که این dll رو استفاده کردیم در فرمی که این کنترل قرار داره ، تک تک تکست باکس های این dll رو صدا زد ؟
با usercontrol1.textbox1.text که نمیشه .

2- چطور باید پروپرتی برای هر کدام از تکست باکس ها در windowscontrollibrary تعریف کرد که بعدا در properties explorer قرار بگیره ؟(با مثال توضیح بدن دوستان ممنون میشم)

فرید نجفلو
چهارشنبه 24 اسفند 1390, 12:16 عصر
شما احتمالا تکست باکس ها رو Public ست نکردید
ولی الان هم دارید کار درست رو انجام می دید:

Public Property Txt1 As String
Get
Return TextBox1.Text
End Get
Set(value As String)
'Validate Data here
TextBox1.Text = value
'you can rais Event here
End Set
End Property

aftabeshargh
چهارشنبه 24 اسفند 1390, 12:32 عصر
ممنون از لطفتون:بوس:

aftabeshargh
چهارشنبه 24 اسفند 1390, 12:43 عصر
(یه سوال بدون ارتباط به این تایپیک) :چشمک:
چرا هر چیزی که در windowscontrollibrayr درست میکنم و dll نهایی رو به پروژه معمولی اضافه میکنم در toolbox اسم dll رو usercontrol مینویسه ؟ کدوم قسمت باید اسمش رو تنظیم کرد ؟

فرید نجفلو
چهارشنبه 24 اسفند 1390, 13:00 عصر
ببینید وقتی شما می خواید UserControl رو ایجاد کنید باید تو پنجره NEW یه نام مناسب بهش بدید
اگه حالا می خواید تغییرش بدید از Solution Explorer روی usercontrol راست کلیک و با Rename اونو تغییر بدید(بررسی کنید نام کلاس هم به صورت خودکار تغییر کرده باشه)
برای نام Dll هم از Solution Explorer روی پروژه راست کلیک با Rename تغییر نام بدید بعد از همون منو Properties رو انتخاب از برگه Application تو تکست باکس های Assembly Name و Root Namspace نام مورد نظر رو بنویسید
یه بار برنامه رو اجرا کنید درست میشه
البته اگه قبلا تو یه پروژه دیگه از Dll استفاده کرده باشید باید نام قبلی(UserControl) رو که استفاده کردید تغییر بدید

aftabeshargh
پنج شنبه 25 اسفند 1390, 12:02 عصر
سلام
چطور میشه برای یک لیبل (label1) در WindowsControlLibrary " یه پروپرتی (public property) تعریف کرد که بعد از افزودن این lable1.dll به پروژه معمولی " بتونیم در این پروژه به خاصیت label1.dll مقدار true ,false بدیم که وقتی مثلا true بود " با کلیک روی این لیبل " panel موجود در فرم پروژه visible ش false بشه ؟

aftabeshargh
پنج شنبه 25 اسفند 1390, 12:51 عصر
یا چطور میشه textchange یه textbox در windowscontrollibrary رو طوری ست کرد که وقتی از این textbox1.dll در پروژه دیگه ای استفاده میشه با نوشتن در این textbox همزمان متنش در textbox دیگه ای در فرم پروژه معمولی هم نوشته بشه ؟ ( اینا به public property مربوط میشه ؟ از دوستان کسی مقاله در این رابطه نداره ؟)

فرید نجفلو
پنج شنبه 25 اسفند 1390, 14:54 عصر
در کل کار هایی که شما می خواید انجام بدید بدون توجه به نوع کنترل و هدفتون به صورت کلی زیر قابل اجراست:
یک پروژه جدید از نوع Class Library ایجاد کنید(تا بتونید در سایر پروژه ها نیز استفاده کنید)
یک کلاس جدید ایجاد کنید(برای هر کنترل یک کلاس و اینکه لازم نیست برای هر کدام یک پروژه جدید ایجاد کنید)
کلاس خود را از کنترل مورد نظر مشتق کنید.
برای مثال ایجاد TextBox سفارشی به صورت زیر خواهد بود:
Public Class CostumTextbox
Inherits Textbox
End Class

متدها ، توابع ، خصوصیات مورد نظر خود را در داخل این کلاس ایجاد ، Overide و Overlord کنید

این پروژه رو کامپایل کنید و به پروزه اصلی اضافه کنید(رفرنس دهید)
کنترل سفارشی شما به Toolbox اضافه خواهد شد.
حالا دیگه این به دانش و خلاقیت شما بستگی داره که چه امکاناتی فراهم کنید

فرید نجفلو
پنج شنبه 25 اسفند 1390, 15:06 عصر
سلام
چطور میشه برای یک لیبل (label1) در WindowsControlLibrary " یه پروپرتی (public property) تعریف کرد که بعد از افزودن این lable1.dll به پروژه معمولی " بتونیم در این پروژه به خاصیت label1.dll مقدار true ,false بدیم که وقتی مثلا true بود " با کلیک روی این لیبل " panel موجود در فرم پروژه visible ش false بشه ؟



اینم یه نمونه که دقیقا همین کار رو انجام می ده(تست شده)

Public Class MyLable
Inherits Label
Private _TogelViewControl As Control
Public Property TogelViewControl As Control
Get
Return _TogelViewControl
End Get
Set(value As Control)
_TogelViewControl = value
End Set
End Property
Private Sub Me_Click(sender As Object, e As System.EventArgs) Handles Me.Click
Try
If _TogelViewControl IsNot Nothing Then
_TogelViewControl.Visible = Not _TogelViewControl.Visible
End If
Catch ex As Exception
End Try
End Sub


برای تست تو همون پروژه خودتون (اجرایی)، یک کلاس جدید ایجاد و کد ها رو داخل اون پیست کنید