تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقال- Custom EventHandler & Classes - الجزء الأول
#6
الأن لنوضح كيف نستفيد من الكلاس ThemeColors عن طريق إضافته إلي اي كونترول

كل ما نحتاجه هو تعريف متغير يشير الي هذا الكلاس ومن ثم نضيف Property تشير اليه ثم نضيف أيضا Handler يشير الي ما نريده ان يحدث عندما تتغير الألوان أو أي لون موجود بالكلاس ThemeColors ثم نستخدم بعض Sub الموجود به لنرسم شيئا ما علي الكونترول والكود يوضح أيضا كيف نقوم بعمل Dispsoe للكلاس ThemeColors


والكود التالي يوضح شكل الكونترول



كود :
Public Class ThemedControl
Inherits Control

Private m_ThemeColors As ThemeColors

Public Sub New()

SetStyle(ControlStyles.SupportsTransparentBackColor, True)
SetStyle(ControlStyles.Opaque, False)
SetStyle(ControlStyles.DoubleBuffer, True)
SetStyle(ControlStyles.AllPaintingInWmPaint, True)
SetStyle(ControlStyles.UserPaint, True)
UpdateStyles()

m_ThemeColors = New ThemeColors
AddHandler Me.m_ThemeColors.ThemeChanged, New EventHandler(AddressOf Me.ThemeColor_ThemeChanged)

End Sub

Public Property Theme() As ThemeColors
Get
Return Me.m_ThemeColors
End Get
Set(ByVal value As ThemeColors)

If Me.m_ThemeColors IsNot value Then
Me.m_ThemeColors = value
AddHandler Me.m_ThemeColors.ThemeChanged, New EventHandler(AddressOf Me.ThemeColor_ThemeChanged)
End If
End Set
End Property

Protected Overrides ReadOnly Property DefaultSize() As System.Drawing.Size
Get
Return New Size(200, 100)
End Get
End Property

Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then

If (Me.m_ThemeColors IsNot Nothing) Then
RemoveHandler Me.m_ThemeColors.ThemeChanged, New EventHandler(AddressOf Me.ThemeColor_ThemeChanged)
Me.m_ThemeColors.Dispose()
End If
m_ThemeColors = Nothing
End If
MyBase.Dispose(disposing)
End Sub

Private Sub ThemeColor_ThemeChanged(ByVal sender As Object, ByVal e As EventArgs)
Me.Invalidate()
End Sub

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
If m_ThemeColors.ApplyTheme Then
m_ThemeColors.DrawTheme(e.Graphics, New Rectangle(0, 0, Me.Width, 24))
Dim r As New Rectangle(0, 0, Me.ClientRectangle.Width - 1, Me.ClientRectangle.Height - 1)
Using controlPen As New Pen(Me.m_ThemeColors.ThemeBorderOut)
e.Graphics.DrawRectangle(controlPen, r)
End Using
End If
End Sub

Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
MyBase.OnResize(e)
Invalidate()
End Sub

End Class
أتمني ان يكون المثال واضحا وكما سبق وأوضحت أن هذا الموضوع ليس للمبتدئين ولكن بالتأكيد تستطيعون الاستفسار عن ما تريدون

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


الردود في هذا الموضوع
مقال- Custom EventHandler & Classes - الجزء الأول - بواسطة Raggi Tech - 05-10-12, 11:47 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 10 8,383 19-07-22, 12:15 AM
آخر رد: StartLight4000
  مقال: الكومبو بوكس ComboBox كيف تضيف أيقونات Blue Sky 1 3,453 30-06-19, 10:41 AM
آخر رد: invocker
  [درس فيديو] مثال بسيط لبرنامج إجازات فقط لأغراض الشرح (الدرس الأول) عبدالله الدوسري 7 12,085 28-04-18, 06:55 PM
آخر رد: moniam
  الفرق بين الأصناف Classes و الكائنات Objects RaggiTech 1 8,442 28-03-18, 10:30 PM
آخر رد: alsouf
  حساب قيمة معادلة(اقصد صيغة دون مجاهيل) مكتوبة بالتكست : الجزء الخامس والاخير محمد شريقي 4 4,827 23-02-18, 10:44 PM
آخر رد: العواد الصغير
  مقدمة إلي إخفاء المعلومات - الجزء الأول silverlight 5 4,502 07-01-17, 10:44 PM
آخر رد: Basil Abdallah
  مقدمة إلي إخفاء المعلومات - الجزء الثاني silverlight 1 3,209 06-01-17, 11:52 AM
آخر رد: silverlight
  تحويل الفيديو في برامجك-الجزء الثاني( إصلاح للمشاكل + تعديل للروابط + توضيح للأمر ) RaggiTech 1 3,509 10-12-14, 06:37 PM
آخر رد: abulayth
  الجزء الثاني من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج ( العمليات المتعددة)! أنس محمود 0 3,003 22-02-13, 12:39 AM
آخر رد: أنس محمود
  مقال- كيفية الاستغناء عن الداتا بيز التقليدية في برامجنا – ألجزء الأول RaggiTech 1 3,684 06-10-12, 12:23 AM
آخر رد: RaggiTech

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


يقوم بقرائة الموضوع: