05-10-12, 11:47 AM
الأن لنوضح كيف نستفيد من الكلاس ThemeColors عن طريق إضافته إلي اي كونترول
كل ما نحتاجه هو تعريف متغير يشير الي هذا الكلاس ومن ثم نضيف Property تشير اليه ثم نضيف أيضا Handler يشير الي ما نريده ان يحدث عندما تتغير الألوان أو أي لون موجود بالكلاس ThemeColors ثم نستخدم بعض Sub الموجود به لنرسم شيئا ما علي الكونترول والكود يوضح أيضا كيف نقوم بعمل Dispsoe للكلاس 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تقبلوا تحياتي
اخوكم عمر
