02-11-21, 06:37 PM
(02-11-21, 05:26 PM)Anas Mahmoud كتب : اخي سلام عليكم اذا كنت ستستخدم الكثر من مربعات النص هذه فانه ليس من الحكمة استخدام احداث Enter و Leave لكل مربع نص على حدة
وكذلك فكرة استخدام تايمر تستهلك من عتاد الكمبيوتر بلا داعي
قمت بكتابة كلاس بمثابة تكست بوكس معدل يضيف خاصية ActiveBackColor بحيث تسند اليها اللون الذي تريده للخلفية في حالة النشاط
كود :
Imports System.ComponentModel
Public Class BackColorTextBox
Inherits TextBox
#Region "Private Variables"
Private IsActive As Boolean = False
Private DefaultBackgroundColor As Color = Nothing
#End Region
#Region "Properties"
Private m_ActiveBackColor As Color = SystemColors.Window
<Description("Back Color When Active لون الخلفية في حالة النشاط"),
Category("Appearance")>
Public Property ActiveBackColor As Color
Get
Return m_ActiveBackColor
End Get
Set(value As Color)
m_ActiveBackColor = value
If IsActive Then setBackColor()
End Set
End Property
#End Region
#Region "Events Overrides"
Protected Overrides Sub OnEnter(e As EventArgs)
Console.WriteLine("On Enter")
IsActive = True
setBackColor()
MyBase.OnEnter(e)
End Sub
Protected Overrides Sub OnLeave(e As EventArgs)
Console.WriteLine("On Leave")
IsActive = False
resetDefaultBackColor()
MyBase.OnLeave(e)
End Sub
#End Region
#Region "Private Methods"
Private Sub setBackColor()
If DefaultBackgroundColor = Nothing Then DefaultBackgroundColor = BackColor
BackColor = m_ActiveBackColor
End Sub
Private Sub resetDefaultBackColor()
BackColor = DefaultBackgroundColor
DefaultBackgroundColor = Nothing
'خلي قيمة الباكجراوند الاصلية بلا شيء
End Sub
#End Region
End Class
اضف هذا الكلاس الى مشروعك وقم بعمل Build و من ثم اضف الاداه الى مشروعك بدلا من ال textbox العادي
ثم اسند اللون الذي تريده من الخاصية ActiveBackColor
قمت بالتعديل على مثال الاخ asmarsou
جزاك الله عنا كل خير اخي الفاضل

