Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB.Net 2005] Array TextBox

    Ciao a tutti ,
    Prima in VB6,quando creavo un array di TextBox avevo tante TextBox con(index)progressivo che gestivo con una sola funzione.
    Adesso in VB.Net 2005 mi crea tante TexBox progressive,premetto che non ho ancora un libro VB.Net e che sono passato a VB.Net da un giorno.Un'altra cosa ma il controllo Line è stato eliminato o sostituito con che cosa?

    Alarico_Re

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,462

    Studio, studio e ancora studio...

    Originariamente inviato da Alarico_Re
    Prima in VB6,quando creavo un array di TextBox avevo tante TextBox con(index)progressivo che gestivo con una sola funzione.
    Adesso in VB.Net 2005 mi crea tante TexBox progressive
    Non hai indicato qual è la tua domanda...

    VB.NET non è affatto VB6: le cose avvengono secondo meccanismi differenti che vanno acquisiti con un certo metodo.

    Se cerchi di rifare in VB.NET tutto ciò che fai in VB6, non sfrutti nemmeno l'1% delle potenzialità del framework e del linguaggio creando pergiunta software peggiore del precedente.

    La libreria Windows Forms che viene utilizzata per la produzione di applicazioni Windows non prevede l'esistenza di una matrice di controlli; tuttavia, si può sempre generare i controlli a runtime, tramite codice, e inserirli all'interno di una ArrayList per poterli indirizzare comodamente. In sostanza, tutto viene gestito a mano, in modo forse meno immediato, ma sicuramente più libero rispetto a VB6: puoi creare liste di controlli eterogenei o inserire riferimenti ai controlli visuali in strutture differenti da una lista.
    La gamma delle possibilità è pressoché infinita.

    Originariamente inviato da Alarico_Re
    premetto che non ho ancora un libro VB.Net e che sono passato a VB.Net da un giorno.Un'altra cosa ma il controllo Line è stato eliminato o sostituito con che cosa?
    Passi a VB.NET a un giorno e stai già producendo applicazioni? Quando mi sono studiato C# io, al primo giorno, avevo sì e no acquisito famigliarita con il framework.

    Dal mio punto di vista, ti conviene agire con metodo e andare "per gradi", altrimenti dell'architettura del framework, come si usano le sue classi e come funzionano gli applicativi non capirai nulla o molto probabilmente, ancora peggio, ti creerai false convinzioni o miti inesistenti.

    P.S.:
    il controllo Line non esiste più, se non sbaglio, ma è facile riprodurre una cosa simile con un banale controllo personalizzato che usi le funzioni di System.Drawing per tracciare una linea.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao Alka,grazie per il consiglio.
    per quanto riguarda la domanda e che prima in VB6 avevo una matrice di controllo di 55 TextBox , che con una sola riga di codice tipo proprietà backcolor = vbyellow cambiavo il colore di sfondo di tutte le textBox al passaggio del Tab.
    Mentre in VB.Net non prevede la matrice di controllo e le TextBox le vedo singolarmente,quindi volendo applicare il codice a tutte le TexBox.
    Spiego cosa voglio fare.
    Ho 55 TextBox incominciando dalla prima tramite il tasto Tab cambiare lo sfondo in giallo, al successivo Tab andare sulla seconda Textbox ,cambiare lo sfondo in giallo mentre la prima ritorna lo sfondo in bianco, e cos' via.Ho provato con gotfocus e lostfocus,ma dovrei inserire il codice per tutte le 55 TexBox,c'è un altro metodo per appliccarlo a tutte inserendo solo 2 righe di codice.
    Questo è il codice in VB6
    Private Sub Text1_Change(Index As Integer)


    If stato = "modifica" Then


    If Len(Text1(Index)) = 2 Then
    'attenzione, la proprietà TabIndex delle textBox relative alle estrazioni,devono essere sequenziali dalla prima all'ultima
    SendKeys "{TAB}", True

    End If
    End If

    End Sub

    Private Sub Text1_GotFocus(Index As Integer)
    If stato = "modifica" Then
    Text1(Index).BackColor = vbYellow


    End If


    End Sub



    Private Sub Text1_LostFocus(Index As Integer)
    Text1(Index).BackColor = vbWhite
    End Sub
    Alarico_Re

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,462
    Originariamente inviato da Alarico_Re
    [...] c'è un altro metodo per appliccarlo a tutte inserendo solo 2 righe di codice.
    E' proprio questo il punto.

    Il modo migliore in un ambiente orientato agli oggetti per disporre di una funzionalità è creare un discendente del controllo TextBox che ridefinisca alcuni dei suoi metodi chiave e rappresenti un nuovo controllo che acquisisce automaticamente tutte le proprie caratteristiche dalla classe base TextBox da cui proviene per estenderle in modo da comportarsi in un modo specifico leggermente diverso dalla classe originale. Successivamente, ti basterà appoggiare sulla tua finestra quante copie vorrai di questo controllo che racchiuderà al suo interno la nuova funzionalità.

    Il problema cruciale è che un simile approccio non può essere affrontato se prima non si apprendono le basi della programmazione ad oggetti (OOP) almeno a livello rudimentale e non si cerca di sfruttarne i vantaggi all'interno dell'ambiente di Visual Studio.

    L'unica via più semplice che puoi intraprendere è definire un evento GotFocus e LostFocus unico, che modifica il colore di sfondo della casella passata come parametro all'evento stesso (sender) e agganciarla a tutti i controlli definiti attraverso la parola chiave Handles (se non ricordo male, poichè non lavoro abitualmente con VB, sia in Win32 che in .NET).

    Quest'ultima soluzione è la più rapida, ma la giudico peggiore poichè poco incentrata a mantenere una buona manutenibilità del codice e ad incentivarne il riutilizzo.

    Ne approfitto per fare un appello a tutti gli sviluppatori VB6 che si avvicinano a VB.NET: studiate la OOP e vedrete quante cose impensabili prima potrete fare con il vostro linguaggio preferito da sempre!

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.