Torna al Thread

Option Explicit On Option Strict On Public Class ClasseMostraBloccaControlliNuova Private Shared Sub MostraONascondeIlControllo(ByRef Ct As Control, ByVal Stato As Integer) 'Rende invisibile il controllo se ha -Nn- nella proprietà TAG; visibile se ha -Vn- dove 'n' è 'il numero dello stato e ignora i restanti e ignora i controlli che non specificano niente x questo stato If IsNothing(Ct.Tag) Then Exit Sub 'Se il Tag è uguale a stringa nulla il controllo nn viene trattato 'Se qui, c'è un Tag nn vuoto Dim T As String = DirectCast(Ct.Tag, String) T = T.ToUpper Dim Vn As String = "-V" & Stato.ToString & "-" Dim Nn As String = "-N" & Stato.ToString & "-" If T.IndexOf(Vn) >= 0 Then 'Se qui, allora in Tag del controllo contiene "-Vn-" e il controllo deve quindi essere Visto nello stato n Ct.Visible = True ElseIf T.IndexOf(Nn) >= 0 Then 'Se qui, allora in Tag del controllo contiene "-Nn-" e il controllo deve quindi essere Nascosto nello stato n Ct.Visible = False End If End Sub Private Shared Sub BloccaOSbloccaIlControllo(ByRef Ct As Control, ByVal Stato As Int32) 'Disabilita il controllo se ha -Nn- nella proprietà TAG; lo abilita se ha -Vn- dove 'n' è 'il numero dello stato e ignora i controlli che non specificano niente x questo stato If IsNothing(Ct.Tag) Then Exit Sub 'Se il Tag è uguale a stringa nulla il controllo nn viene trattato 'Se qui, c'è un Tag nn vuoto Dim T As String = DirectCast(Ct.Tag, String) T = T.ToUpper Dim Vn As String = "-SB" & Stato.ToString & "-" Dim Nn As String = "-BL" & Stato.ToString & "-" Dim tb As TextBox Dim rb As RadioButton If T.IndexOf(Vn) >= 0 Then 'Se qui, allora in Tag del controllo contiene "-Vn-" e il controllo deve quindi essere abilitato nello stato n 'Se è una textbox, si toglie il readonly If TypeOf Ct Is TextBox Then tb = CType(Ct, TextBox) tb.ReadOnly = False tb.Enabled = True 'Alcune textbox personalizzate vengono bloccate disabilitandole Exit Sub End If Ct.Enabled = True ElseIf T.IndexOf(Nn) >= 0 Then 'Se qui, allora in Tag del controllo contiene "-Nn-" e il controllo deve quindi essere disabilitato nello stato n 'Se il controllo è un radio button si disabilita solo se nn è selezionato If TypeOf Ct Is RadioButton Then rb = CType(Ct, RadioButton) rb.Enabled = rb.Checked Exit Sub End If 'Se è una textbox, e contiene "-READONLY-" nel TAG, si mette readonly If TypeOf Ct Is TextBox And Not Ct.GetType.ToString.ToUpper = "LIBRERIACONTROLLI.TXBMONETARIA" Then tb = CType(Ct, TextBox) tb.ReadOnly = True Exit Sub End If 'Se è un qualsiasi altro controllo, compresa la textboxmonetaria, lo si disabilita Ct.Enabled = False End If End Sub ''' <summary> ''' Rende invisibili i controlli che nel Form hanno -Nn- nella proprietà TAG, visibili quelli che ''' hanno -Vn- dove 'n' è il numero dello stato e ignora i restanti .Parimenti blocca i controlli ''' con -BLn- e sblocca quelli con -SBn- dove n è lo stato e ignora quelli che non hanno ''' specifiche x questo stato ''' </summary> ''' <param name="IlForm"></param> ''' <param name="Stato"></param> ''' <remarks></remarks> Public Shared Sub SistemaControlliPerLoStato(ByRef IlForm As Form, ByVal Stato As Integer) 'Rende invisibili i controlli che nel Form hanno -Nn- nella proprietà TAG, visibili quelli ' che hanno -Vn- dove 'n' è il numero dello stato e ignora i restanti 'Parimenti blocca i controlli con -BLn- e sblocca quelli con -SBn- dove n è lo stato e ignora quelli che ' non hanno specifiche x questo stato Dim F As Form = DirectCast(IlForm, Form) Dim Ct As Control For Each Ct In F.Controls CicloXVisibilitàSecondoLoStato(Ct, Stato) CicloXAttivazioneSecondoLoStato(Ct, Stato) Next End Sub Private Shared Sub CicloXVisibilitàSecondoLoStato(ByRef ct As Control, ByVal stato As Integer) Dim CtlFiglio As Control = Nothing MostraONascondeIlControllo(ct, stato) For Each CtlFiglio In ct.Controls 'CicloXBlocco(CtlFiglio) 'MostraONascondeIlControllo(CtlFiglio, stato) CicloXVisibilitàSecondoLoStato(CtlFiglio, stato) Next End Sub Private Shared Sub CicloXAttivazioneSecondoLoStato(ByRef ct As Control, ByVal stato As Int32) Dim CtlFiglio As Control = Nothing BloccaOSbloccaIlControllo(ct, stato) For Each CtlFiglio In ct.Controls 'CicloXBlocco(CtlFiglio) 'BloccaOSbloccaIlControllo(CtlFiglio, stato) CicloXAttivazioneSecondoLoStato(CtlFiglio, stato) Next End Sub End Class
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5