05-10-12, 01:17 PM
مثلما فعلنا في المثال الثاني يمكننا ان نضيف أي Enum الي ComboBox أو ListBox
والمثال الثالث مجرد تأكيد لنفس الفكرة المستخدمة مع المثال الثاني ولكن من ُEnum اخر وهو Hatchstyle Enum بالإضافة الي بعض Enums الأخري
والكود التالي يوضح الشكل النهائي للكود ولتنفيذ الكود أضف الي الفورم أربعة كومبوبوكس
الكود الموجود بالمرفقات بنسخة الفيجوال استوديو 2010
في المشاركات اللاحقة سوف نناقش كيف نستفيد أكثر من Enum و بطرق أخري مختلفة
تقبلوا تحياتي ولا تنسونا في دعائكم..............
أخوكم عمر
والمثال الثالث مجرد تأكيد لنفس الفكرة المستخدمة مع المثال الثاني ولكن من ُEnum اخر وهو Hatchstyle Enum بالإضافة الي بعض Enums الأخري
والكود التالي يوضح الشكل النهائي للكود ولتنفيذ الكود أضف الي الفورم أربعة كومبوبوكس
كود :
Public Class Form1
Private align As ContentAlignment = ContentAlignment.TopLeft
Private clr As Color = Color.Empty
Private hatch As HatchStyle = Nothing
Private pType As DashStyle = DashStyle.Dash
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Fill ComboBox1 with HatchStyle Enum
For Each hatchStyleObject As Object In [Enum].GetValues(GetType(HatchStyle))
If Not ComboBox1.Items.Contains(hatchStyleObject) Then ComboBox1.Items.Add(hatchStyleObject)
Next
' Fill ComboBox2 with ContentAlignment Enum
For Each contentAlignmentObject As Object In [Enum].GetValues(GetType(ContentAlignment))
If Not ComboBox2.Items.Contains(contentAlignmentObject) Then ComboBox2.Items.Add(contentAlignmentObject)
Next
' Fill ComboBox3 with KnowColor Enum
For Each knownColorObject As Object In [Enum].GetValues(GetType(KnownColor))
If Not ComboBox3.Items.Contains(knownColorObject) Then ComboBox3.Items.Add(knownColorObject)
Next
' Fill ComboBox4 with DashStyle Enum
For Each dashStyleObject As Object In [Enum].GetValues(GetType(DashStyle))
If Not ComboBox4.Items.Contains(dashStyleObject) Then ComboBox4.Items.Add(dashStyleObject)
Next
End Sub
Private Function GetHatchStyleFromString(ByVal hatchString As String, ByVal ignoreCase As Boolean) As HatchStyle
Return CType([Enum].Parse(GetType(HatchStyle), hatchString, ignoreCase), HatchStyle)
End Function
Private Function GetContentAlinmentFromString(ByVal hatchString As String, ByVal ignoreCase As Boolean) As ContentAlignment
Return CType([Enum].Parse(GetType(ContentAlignment), hatchString, ignoreCase), ContentAlignment)
End Function
Private Function GetKnowColorString(ByVal ColorName As String, ByVal ignoreCase As Boolean) As KnownColor
Return CType([Enum].Parse(GetType(KnownColor), ColorName, ignoreCase), KnownColor)
End Function
Private Function GetDashStyleString(ByVal ColorName As String, ByVal ignoreCase As Boolean) As DashStyle
Return CType([Enum].Parse(GetType(DashStyle), ColorName, ignoreCase), DashStyle)
End Function
' Get HatchStyle value from ComboBox1
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
hatch = GetHatchStyleFromString(Me.ComboBox1.SelectedItem, True)
Invalidate()
End Sub
' Get ContentAlignment value from ComboBox2
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
align = GetContentAlinmentFromString(Me.ComboBox2.SelectedItem, True)
Invalidate()
End Sub
' Get Color value from ComboBox3
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
clr = Color.FromKnownColor(GetKnowColorString(Me.ComboBox3.SelectedItem, True))
Invalidate()
End Sub
' Get Pen DashStyle value from ComboBox4
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged
pType = GetDashStyleString(Me.ComboBox4.SelectedItem, True)
Invalidate()
End Sub
' Paint Something in the Form
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim TestRectangle As New Rectangle(10, 10, 200, 200)
Dim frameRect As Rectangle = TestRectangle
frameRect.X -= 4
frameRect.Y -= 4
frameRect.Width += 8
frameRect.Height += 8
Using obrush As New Drawing2D.LinearGradientBrush(frameRect, ControlPaint.Light(clr), ControlPaint.Dark(clr), Drawing2D.LinearGradientMode.Vertical)
e.Graphics.FillRectangle(obrush, frameRect)
Using framePen As New Pen(Brushes.Black)
framePen.DashStyle = pType
e.Graphics.DrawRectangle(framePen, frameRect)
End Using
End Using
Using hBrush As New Drawing2D.HatchBrush(hatch, clr)
e.Graphics.FillRectangle(hBrush, TestRectangle)
Using borderPen As New Pen(clr)
borderPen.DashStyle = pType
e.Graphics.DrawRectangle(borderPen, TestRectangle)
End Using
End Using
If Me.Text IsNot Nothing Then
Dim format As New StringFormat()
format.LineAlignment = StringAlignment.Center
format.Trimming = StringTrimming.EllipsisCharacter
Select Case align
Case ContentAlignment.BottomCenter
format.Alignment = StringAlignment.Center
format.LineAlignment = StringAlignment.Far
Exit Select
Case ContentAlignment.BottomLeft
format.Alignment = StringAlignment.Near
format.LineAlignment = StringAlignment.Far
Exit Select
Case ContentAlignment.BottomRight
format.Alignment = StringAlignment.Far
format.LineAlignment = StringAlignment.Far
Exit Select
Case ContentAlignment.MiddleCenter
format.Alignment = StringAlignment.Center
format.LineAlignment = StringAlignment.Center
Exit Select
Case ContentAlignment.MiddleLeft
format.Alignment = StringAlignment.Near
format.LineAlignment = StringAlignment.Center
Exit Select
Case ContentAlignment.MiddleRight
format.Alignment = StringAlignment.Far
format.LineAlignment = StringAlignment.Center
Exit Select
Case ContentAlignment.TopCenter
format.Alignment = StringAlignment.Center
format.LineAlignment = StringAlignment.Near
Exit Select
Case ContentAlignment.TopLeft
format.Alignment = StringAlignment.Near
format.LineAlignment = StringAlignment.Near
Exit Select
Case ContentAlignment.TopRight
format.Alignment = StringAlignment.Far
format.LineAlignment = StringAlignment.Near
Exit Select
End Select
Dim fnt As New Font("Times /new Roman", 25.0F, FontStyle.Bold)
Using sb As New SolidBrush(Color.White)
e.Graphics.DrawString(Me.Text, fnt, sb, TestRectangle, format)
End Using
End If
End Sub
End Classفي المشاركات اللاحقة سوف نناقش كيف نستفيد أكثر من Enum و بطرق أخري مختلفة
تقبلوا تحياتي ولا تنسونا في دعائكم..............
أخوكم عمر
