Is ther an alternative to activecontrol

I am working with a form and I need to know what the active control is.  I am using AddHandler.  So far I am using something like this

AddHandler txtBox.GotFocus, AddressOf TextBox_GotFocus

then this
   Private Sub TextBox_GotFocus()
        _form.ActiveControl.BackColor = Highlight
    End Sub

I wrote a sample version outside of the main application and things went well.  The controls on the form are standard windows syncfusion, and some usercontrols.  All of these sit on an image panel divided up on a tabsheet.

I realise this is a bit of a soup in terms of form content, but that is what I have to work with.  I supect I might be able to use an alternative approach to ActiveControl but I am not aware of it.

As a foot note the _form is a by reference to the form because this code is in a class, the intent is to create a generic branding class to enable brand format to be applied over the whole application.  Also this is a winforms development.
LVL 1
AlyantoAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
CodeCruiserConnect With a Mentor Commented:
I think this is the best approach for this task as far as I can see. For branding, what you can do is have a static method or a class method which takes a form and applies formatting to all its controls. Then call this method when creating a form.
0
 
AlyantoAuthor Commented:
The code to date

Imports System.Windows.Forms
Imports System.Drawing

Public Class cGenFormFormatter
    Private _form As Form
    Private ReadOnly Property Highlight As Color
        Get
            Return Color.FromArgb(0, 43, 85)
        End Get
    End Property
    Private Property ctrlBackColor As Color
    Private Property MouseOver As Color
    Private Property aControl As Control

    Public Sub New(ByRef Frm As Form)
        Dim icn As System.Drawing.Icon = My.Resources.form_default
        Frm.Icon = icn



        For Each ctrl As Control In Frm.Controls
            Debug.Print(ctrl.GetType().ToString)
            WhatControl(ctrl)

        Next
    End Sub

    Public Sub WhatControl(Ctrl As Control)
        Select Case Ctrl.GetType().BaseType.ToString
            Case "System.Windows.Forms.UserControl"
                UserCtrl(Ctrl)
            Case Else
                Select Case Ctrl.GetType().ToString
                    Case "Syncfusion.Windows.Forms.Tools.GradientPanel"
                        GradientPanel(Ctrl)
                    Case "Syncfusion.Windows.Forms.Tools.TabControlAdv"
                        TabControlAdv(Ctrl)
                    Case "Syncfusion.Windows.Forms.Tools.TextBoxExt"
                        syncTextBox(Ctrl)
                    Case "System.Windows.Forms.TextBox"
                        txtBox(Ctrl)
                    Case Else

                        Debug.Print(Ctrl.GetType().ToString)
                End Select
        End Select

    End Sub

    Public Sub GradientPanel(ByRef pnl As Syncfusion.Windows.Forms.Tools.GradientPanel)
        For Each ctrl As Control In pnl.Controls
            WhatControl(ctrl)
        Next
    End Sub

    Public Sub TabControlAdv(ByRef tabs As Syncfusion.Windows.Forms.Tools.TabControlAdv)
        Try
            For Each tb As Syncfusion.Windows.Forms.Tools.TabPageAdv In tabs.TabPages
                TabPageAdv(tb)
            Next
        Catch ex As Exception
            Debug.Print(ex.Message)

        End Try

    End Sub

    Public Sub TabPageAdv(ByRef tab As Syncfusion.Windows.Forms.Tools.TabPageAdv)
        For Each ctrl As Control In tab.Controls
            WhatControl(ctrl)
        Next
    End Sub

    Private Sub UserCtrl(ByRef UCtrl As UserControl)
        For Each ctrl As Control In UCtrl.Controls
            WhatControl(ctrl)
        Next
    End Sub

    Private Sub syncTextBox(txtBox As Syncfusion.Windows.Forms.Tools.TextBoxExt)
        ctrlBackColor = txtBox.BackColor
        AddHandler txtBox.GotFocus, AddressOf TextBox_GotFocus
        AddHandler txtBox.LostFocus, AddressOf TextBox_LostFocus
    End Sub

    Private Sub TextBox_GotFocus()
        _form.ActiveControl.BackColor = Highlight
    End Sub

    Private Sub TextBox_LostFocus()
        _form.ActiveControl.BackColor = ctrlBackColor
    End Sub

    Private Sub txtBox(txtBox As System.Windows.Forms.TextBox)
        ctrlBackColor = txtBox.BackColor
        AddHandler txtBox.GotFocus, AddressOf TextBox_GotFocus
        AddHandler txtBox.LostFocus, AddressOf TextBox_LostFocus
    End Sub

 End Class
0
 
AlyantoAuthor Commented:
Timely as ever
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.