تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] تغيير لون خلفية textbox عند انتقال المؤشر داخل الاداة
#4
(25-04-20, 11:40 PM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
افضل الحلول لهكذا عقبات , هي باعادة تصميم الكائن و فرض التغيرات في المناطق التي نريدها
و هي هنا عند التركيز و فقد التركيز
انشأ مشروع جديد و سميه مثلاً MyTextBox
اضف له كلاس باسم MyTextBox , ثم ضع بداخله الكود التالي
PHP كود :
Imports System.Runtime.InteropServices

Public Class MyTextBox Inherits TextBox

    Public 
Const WM_NCPAINT As Integer = &H85

    
<Flags()>
 
   Private Enum RedrawWindowFlags As UInteger
        Invalidate 
= &H2
        InternalPaint 
= &H3
        
[Erase] = &H4
        Validate 
= &H8
        NoInternalPaint 
= &H10
        NoErase 
= &H20
        NoChildren 
= &H40
        AllChildren 
= &H80
        UpdateNow 
= &H100
        EraseNow 
= &H200
        Frame 
= &H400
        NoFrame 
= &H800
    End Enum

    
<DllImport("User32.dll")>
 
   Public Shared Function GetWindowDC(ByVal hWnd As IntPtr) As IntPtr
    End 
Function

 
   <DllImport("user32.dll")>
 
   Private Shared Function ReleaseDC(ByVal hWnd As IntPtrByVal hDC As IntPtr) As Boolean
    End 
Function

 
   <DllImport("user32.dll")>
 
   Private Shared Function RedrawWindow(hWnd As IntPtrlprcUpdate As IntPtrhrgnUpdate As IntPtrflags As RedrawWindowFlags) As Boolean
    End 
Function

 
   Public Sub New()
 
       MyBase.BorderStyle Windows.Forms.BorderStyle.Fixed3D
    End Sub

    Protected Overrides Sub OnResize
(As System.EventArgs)
 
       MyBase.OnResize(e)
 
       RedrawWindow(Me.HandleIntPtr.ZeroIntPtr.ZeroRedrawWindowFlags.Frame Or RedrawWindowFlags.UpdateNow Or RedrawWindowFlags.Invalidate)
 
   End Sub

    Protected Overrides Sub WndProc
(ByRef m As Message)
 
       MyBase.WndProc(m)

 
       If m.Msg WM_NCPAINT Then
            Dim hDC 
As IntPtr GetWindowDC(m.HWnd)
 
           Using g As Graphics Graphics.FromHdc(hDC)
 
               If Me.Focused Then
                    g
.DrawRectangle(Pens.CornflowerBlue, New Rectangle(00Me.Width 1Me.Height 1))
 
               Else
                    g
.DrawRectangle(Pens.Gainsboro, New Rectangle(00Me.Width 1Me.Height 1))
 
               End If
 
               g.DrawRectangle(SystemPens.Window, New Rectangle(11Me.Width 3Me.Height 3))
 
           End Using
            ReleaseDC
(m.HWndhDC)
 
       End If

 
   End Sub

    Protected Overrides Sub OnGotFocus
(ByVal e As System.EventArgs)
 
       MyBase.OnGotFocus(e)
 
       Me.BackColor Color.Red
    End Sub

    Protected Overrides Sub OnLostFocus
(ByVal e As System.EventArgs)
 
       Me.BackColor Color.White
        MyBase
.OnLostFocus(e)
 
   End Sub
End 
Class 
اعمل Build للمشروع , سيندرج لك عنصر جديد في قائمة الادوات باسم MyTextBox .
الان اسحبه الى المشروع و تمتع بخصائصه الجديدة
انتبه الى الحدثين OnGotFocus , OnLostFoucs
قمنا بتغير لون الخلفية الى اللون الذي نريد  , غيرها لما تحب

شكر الله لك ضبط معي الله يبارك فيك

(25-04-20, 10:34 PM)سامي محمد كتب : ضع تايمر 


وفي حدث الــ Load للفورم

كود :
  Timer1.Start()

وفي حدث الـــ Tick للتايمر

إقتباس :  For Each x As TextBox In Me.Controls.OfType(Of TextBox)
            x.BackColor = Color.White
            If x.GetHashCode = GetContainerControl.ActiveControl.GetHashCode Then
                x.BackColor = Color.Red
            End If
        Next

سيتم مراقبة النشط من الكنترول لكن من نوع تكست
------
مع ان حدثي الـــ GotFocus والـــ LostFocu ليس صعبا اذا تم تحويل الــ sender من Object إلى Textbox ...... وجمعها جميعا في حدث واحد

الشكر ايضا موصول لك اخوي سامي
الرد }}}


الردود في هذا الموضوع
RE: تغيير لون خلفية textbox عند انتقال المؤشر داخل الاداة - بواسطة سمير1404 - 26-04-20, 12:53 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,866 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 658 09-03-25, 03:52 AM
آخر رد: silverlord
  [كود] كود تغيير حجم النص في التكست بوكس hassan 8 8,802 30-01-25, 02:33 AM
آخر رد: خالد كامل1
  محتاج كود انتقال خالد كامل1 2 444 22-01-25, 11:38 AM
آخر رد: قناص المدينة
  كود انتقال مؤشر الماوس من تكست الى تكست اخر خالد كامل1 1 473 20-01-25, 12:21 AM
آخر رد: خالد كامل1
  تغيير أسم ملف DOX.1 3 3,277 01-01-25, 09:37 PM
آخر رد: anes
  استدعاء من جدولين داخل اداه FlowLayoutPanel برجاء الافادة للضرورة جداً modymody300894 7 644 15-11-24, 11:02 AM
آخر رد: modymody300894
  كتابه عدد معين من الارقام داخل تيكست بوكس modymody300894 3 564 07-11-24, 09:15 PM
آخر رد: modymody300894
  تغيير مكان حفظ الصورة من قاعدة البيانات إلى مجلد في مسار البرنامج F.H.M 37 2,366 05-11-24, 08:30 AM
آخر رد: F.H.M
  ترتيب شجره الحسابات داخل الجريد فيو modymody300894 2 414 31-10-24, 12:27 PM
آخر رد: modymody300894

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


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