Avatar of Alyanto
AlyantoFlag for United Kingdom of Great Britain and Northern Ireland

asked on 

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.
Visual Basic.NET

Avatar of undefined
Last Comment
Alyanto
Avatar of Alyanto
Alyanto
Flag of United Kingdom of Great Britain and Northern Ireland image

ASKER

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
ASKER CERTIFIED SOLUTION
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of Alyanto
Alyanto
Flag of United Kingdom of Great Britain and Northern Ireland image

ASKER

Timely as ever
Visual Basic.NET
Visual Basic.NET

Visual Basic .NET (VB.NET) is an object-oriented programming language implemented on the .NET framework, but also supported on other platforms such as Mono and Silverlight. Microsoft launched VB.NET as the successor to the Visual Basic language. Though it is similar in syntax to Visual Basic pre-2002, it is not the same technology,

96K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo