منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : طلب كود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
أحتاج كود لتغيير خلفية textbox الذي يكون في حالة select  أي المحدد 
(26-10-21, 01:16 AM)paveldida كتب : [ -> ]
السلام عليكم
أحتاج كود لتغيير خلفية textbox الذي يكون في حالة select  أي المحدد 

و عليكم السلام و رحمة الله و بركاته
 اليك بهذا المثال لعله مثل ما تنشد
بارك الله فيك أخي
ممكن كود آخر يكون مختصر اكثر
(01-11-21, 12:22 AM)paveldida كتب : [ -> ]ممكن كود آخر يكون مختصر اكثر

اصف لمشروعك  مؤقت و ازرع فيه الكود التالي مع مراعاة ان يكون المؤقت مفعل
كود :
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
     
       For Each ctrl As Control In Me.Controls
           If TypeOf ctrl Is TextBox Then
               If ctrl.Name = Me.ActiveControl.Name Then
                   ctrl.BackColor = Color.BlueViolet
               Else
                   ctrl.BackColor = Color.White
               End If
           End If      
       Next
   End Sub
اخي سلام عليكم اذا كنت ستستخدم الكثر من مربعات النص هذه فانه ليس من الحكمة استخدام احداث 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 العادي

[attachment=27120]

ثم اسند اللون الذي تريده من الخاصية ActiveBackColor 


[attachment=27121]

[attachment=27122]

قمت بالتعديل على مثال الاخ asmarsou
(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

جزاك الله عنا كل خير اخي الفاضل
بارك الله فيك و رحم الله اباك