تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقال- أفكار في الدوت نت Enum
#11
كاتب المشاركة : silverlight

كيف تبني كونترول يقبل ُEnum فقط

من الممكن بناء كونترول يقبل Enum فقط وبطريقة بسيطة جدا ..... ومثال علي ذلك ListBox Control أو ComboBox Control والفكرة ببساطة كالأتي

بما اننا نستطيع الحصول علي Strings الموجودة داخل Enum وذلك باستخدام GetType لذلك من الممكن أن نضيف صفة Property الي الكونترول ومن ثم نمرر لها أي Enum وهذه االصفة Property ستكون من النوع Type والكود التالي يوضح الأمر


كود :
Private _enumType As Type
<Browsable(False), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Property EnumType As Type
Get
Return Me._enumType
End Get
Set(ByVal value As Type)
If (Not Me._enumType Is value) Then
Me._enumType = value
MyBase.Items.Clear()
If Not Me._enumType.IsEnum Then
Throw New ArgumentException((Me._enumType.FullName) & " is not enum")
End If
For Each obj As Object In [Enum].GetValues(Me._enumType)
MyBase.Items.Add(obj)
Next
End If
End Set
End Property

وكما سبق و أوضحت يمكن إضافة مثل هذه Property الموجودة في الكود أعلاه الي أي كونترول مثل ListBox أو ComboBox

والكود التالي يوضح ذلك ...............

EnumListBox كونترول


كود :
Imports System.Windows.Forms
Imports System.ComponentModel

Public Class EnumListBox
Inherits ListBox


#Region " Fields "

Private _enumType As Type
Private components As IContainer

#End Region

#Region " Constructor "

Public Sub New()
Me.InitializeComponent()
End Sub

#End Region

#Region " Properties "

<Browsable(False), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Property EnumType As Type
Get
Return Me._enumType
End Get
Set(ByVal value As Type)
If (Not Me._enumType Is value) Then
Me._enumType = value
MyBase.Items.Clear()
If Not Me._enumType.IsEnum Then
Throw New ArgumentException((Me._enumType.FullName) & " is not enum")
End If
For Each obj As Object In [Enum].GetValues(Me._enumType)
MyBase.Items.Add(obj)
Next
End If
End Set
End Property

#End Region

#Region " Methods "

Private Sub InitializeComponent()
Me.components = New Container
End Sub

Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If (disposing AndAlso (Not Me.components Is Nothing)) Then
Me.components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub

#End Region

End Class
EnumComboBox كونترول


كود :
Imports System.Windows.Forms
Imports System.ComponentModel

Public Class EnumComboBox
Inherits ComboBox

#Region " Fields "

Private _enumType As Type
Private components As IContainer

#End Region

#Region " Constructor "

Public Sub New()
Me.InitializeComponent()
End Sub

#End Region

#Region " Properties "

<Browsable(False), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Property EnumType As Type
Get
Return Me._enumType
End Get
Set(ByVal value As Type)
If (Not Me._enumType Is value) Then
Me._enumType = value
MyBase.Items.Clear()
If Not Me._enumType.IsEnum Then
Throw New ArgumentException((Me._enumType.FullName) & " is not enum")
End If
For Each obj As Object In [Enum].GetValues(Me._enumType)
MyBase.Items.Add(obj)
Next
End If
End Set
End Property

#End Region

#Region " Methods "

Private Sub InitializeComponent()
Me.components = New Container
End Sub

Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If (disposing AndAlso (Not Me.components Is Nothing)) Then
Me.components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub

#End Region

End Class ' AioComboBox
في المشاركة التالية سأوضح كيفية استخدام هذه الكونترول ......


تقبلوا تحياتي
أخوكم عمر
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
مقال- أفكار في الدوت نت Enum - بواسطة Raggi Tech - 05-10-12, 01:29 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 6,350 30-07-21, 05:14 PM
آخر رد: kebboud
  مقال: الكومبو بوكس ComboBox كيف تضيف أيقونات Blue Sky 1 3,457 30-06-19, 10:41 AM
آخر رد: invocker
  التــعامل مع cmd من خلال الدوت نت مبتدئ في الاحتراف 3 4,048 02-06-18, 12:36 AM
آخر رد: YousefOkasha
  أفكار في الجرافكس AlignRectangle silverlight 0 1,719 14-10-17, 02:02 PM
آخر رد: silverlight
  تفقيط الارقام فى الدوت نت مبرمج أوتار 17 13,438 20-04-17, 12:21 PM
آخر رد: محمد بوقزاحة
  [مقال] تشغيل برمجيات الدوت نت بدون تنصيب النت فروم ويرك m0075 13 11,143 13-02-14, 08:29 PM
آخر رد: Omar Mekkawy
  مقال- كيفية الاستغناء عن الداتا بيز التقليدية في برامجنا – ألجزء الأول RaggiTech 1 3,690 06-10-12, 12:23 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Property Attributes الجزء الثالث RaggiTech 0 2,477 06-10-12, 12:20 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Skin Control RaggiTech 0 2,633 06-10-12, 12:08 AM
آخر رد: RaggiTech
  مقال- كيف تصنع ملفات المساعدة Help Files وتربطها مع برنامجك RaggiTech 0 3,416 05-10-12, 07:30 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم