PDA

View Full Version : آموزش: کنترل کاربر User Control



nasim bahari
پنج شنبه 17 تیر 1389, 13:09 عصر
User Control

کنترل کاربر بسیار شبیه یک فرم مینیاتوری ویندوز است. که می توان کنترلهای دیگر را روی آن قرار داد و به عنوان یک کنترل مستقل از آن استفاده کرد.

مثال:

برای شروع، فرمان File|New|Project را انتخاب کنید تا پنجره ، پروژه جدید باز شود، در قسمت Template ، آیتم Windows Forms Control Library را انتخاب کرده و نام پروژه را UserControl بگذارید.(برای اضافه کردن کنترل کاربر به یک پروژه موجود می توانید از فرمان Project|Add User Control استفاده کنید)، ok یادت نره..........

کنترل کاربر شبیه یک فرم ویندوز کوچک (در واقع رفتار آن هم بسیار شبیه فرم های ویندوز است) و می توان کنترل های ویندوز را روی آن قرار داد> در این مثال، یک برچسب روی کنترل کاربر قرار می دهیم.

توجه کنید که کنترل های کاربر همانند کنترل ها ی استاندارد می توانند خاصیت، متد و رویداد داشته باشند، در اینجا نشان می دهیم که چگونه می توان این آیتم ها را به یک کنترل کاربر اضافه کرد.

اضافه کردن خاصیت به کنترل کاربر

حال می خواهیم خاصیتی بنام CenterColor به کنترل جدید اضافه کنیم که با آن بتوان رنگ برچسب وسط کنترل را ، ست کرد. ( در واقع این خاصیت را با خاصیت BackColor برچسب نسبت خواهیم داد.) برای این کار پنجره طراح کد کنترل جدید را باز کنید، همانطور که مشاهده می کنید این کنترل از کلاس System.Windows.forms.UserControl مشتق شده است.
خاصیت جدید را می توان با دستور Property پیاده سازی کرد. برای ذخیره کردن مقدار این خاصیت از یک شی Color بنام InternalColor استفاده می کنیم، و با متد های Get و Set بترتیب مقدار آن را خوانده و یا می نویسیم:


Public Class UserControl1
Inherits System.Windows.Forms.UserControl

#Region "Windows Form Designer generated code

Private InternalColor As Color
Property CenterColor() As Color
Get
Return InternalColor
End Get
Set(ByVal ColorValue As Color
InternalColor=ColorValue
Lable1.BacColor=InternalColor
End Set
End Property
End Class


اضافه کردن متد به کنترل کاربر

اضافه کردن متد به همان سادگی اضافه کردن خاصیت است: فقط کافیست کد متد مورد نظر را در کنترل کاربر بنویسیم (اگر بخواهیم متد از خارج کنترل قابل دسترسی باشه ، باید آنرا به صورت Public تعریف کنیم)
در زیر متدی بنام SetText به کنترل UserControl اضافه می کنیم. که با آن می توان متن برچسب وسط کنترل را وارد کرد:


Public Class UserControl1
Inherits System.Windows.Forms.UserControl

#Region "Windows Form Designer generated code

Private InternalColor As Color
Property CenterColor() As Color
Get
Return InternalColor
End Get
Set(ByVal ColorValue As Color
InternalColor=ColorValue
Lable1.BacColor=InternalColor
End Set
End Property

Public Sub SetText(ByVal LableText As String
Lable1.Text=LableText
End Sub

End Class



اضافه کردن رویداد به کنترل کاربر

برای اضافه کردن رویداد جدید به کنترل کاربر از دستور Event ( و متد RaiseEvent ) استفاده می کنیم. در زیر رویداد جدیدی بنام TextChange به کنترل کاربر اضافه می کنیم، که با تغییر کردن متن برچسب وسط کنترل ، رخ خواهد داد ( این رویداد را نباید با روداد TextChanged که جزء رویداد های ذاتی کلاس کنترل کاربر هست، اشتباه بگیرید )


Public Class UserControl1
Inherits System.Windows.Forms.UserControl

#Region "Windows Form Designer generated code

Private InternalColor As Color

Public Event TextChange(ByVal LableText As String


Property CenterColor() As Color
Get
Return InternalColor
End Get
Set(ByVal ColorValue As Color
InternalColor=ColorValue
Lable1.BacColor=InternalColor
End Set
End Property

Public Sub SetText(ByVal LableText As String
Lable1.Text=LableText
RaiseEvent TextChange(LableText
End Sub

End Class


تست کنترل کاربر

حال برای اینکه بتوانید از کنترل جدید استفاده کنید ، ابتدا باید آنرا ( با فرمان Build|Build Solution) به یک فایل Dll کامپایل کرده، و سپس در پروژه مقصد یک ارجاع به آن ایجاد کنید.





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

راستی سعی می کنم اگه وقت کردم یه مثال هم بزارم.............

complexcoding
دوشنبه 27 دی 1389, 11:24 صبح
یه فیلم خوب http://www.joegrip.com/demos/csharp/winform-intro/start.html

nowar1352
جمعه 31 تیر 1390, 01:02 صبح
استاد گرامي
nasim bahari (http://barnamenevis.org/member.php?133976-nasim-bahari)

من ميام يه ويندوزكلاس لايبرري ميسازم يه تكست باكس و يه باتم بغل هم ميزارم تو صفحه بعدشم ميخوام اين كنترل تركيبي از يه تكست باكس ارث بري كنه ولي اين خط ارور ميده

Inherits System.Windows.Forms.TextBox
Add Refrence iهم كردم ولي بازم ارور داده چكار كنم خيلي ببخشيد كه وقت تو ميگرم لطفآ كمكم كنيد سپاس گذارم