Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Posso creare una matrice di textbox

    Posso creare una matrice di textbox in vb.net?
    Tony

  2. #2
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    da quanto ricordo le matrici in .net non ci sono (credo)

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    si esatto.

  4. #4
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    se ci dici quello che vuoi fare... magari cè quelcuno che ti aiuta...
    da quanto ho capito vuoi creare dei controlli in fase di runtime...

  5. #5
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    Re: Posso creare una matrice di textbox

    Originariamente inviato da tony83
    Posso creare una matrice di textbox in vb.net?
    In realtà si può, ma non in modo nativo... nel senso che in VB6, se non sbaglio, già nella finestra di progettazione si poteva dare lo stesso nome a più controlli uguali e poi dare loro un indice.
    Anche in VB.NET si può, ma è un tantino più complicato. Se il tuo scopo è rendere comune qualche procedura di evento, ecco due casi possibili:
    [list=1][*]Conosci già in fase di progettazione il numero di textbox della matrice, che quindi è fissato. In questo caso puoi benissimo creare le textbox di cui hai bisogno, dando loro nomi diversi (che ne so, text1, text2, text3...). A questo punto fai generare la procedura di evento che ti interessa per la prima textbox, e assegni la procedura di evento anche alle altre textbox della "matrice". Nella procedura, il parametro "sender" (dovrebbe essere il primo) indica la textbox che ha scatenato l'evento, su cui puoi lavorare.[*]Non sai a propri qual è il numero di textbox. In questo caso devi generare a runtime le diverse textbox e assegnare loro la stessa procedura di evento, secondo lo stesso principio di sopra.[/list=1]

    Svegliati, Neo. Matrix ti possiede...

  6. #6
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Re: Re: Posso creare una matrice di textbox

    Originariamente inviato da newbie
    In realtà si può, ma non in modo nativo... nel senso che in VB6, se non sbaglio, già nella finestra di progettazione si poteva dare lo stesso nome a più controlli uguali e poi dare loro un indice.
    Anche in VB.NET si può, ma è un tantino più complicato. Se il tuo scopo è rendere comune qualche procedura di evento, ecco due casi possibili:
    [list=1][*]Conosci già in fase di progettazione il numero di textbox della matrice, che quindi è fissato. In questo caso puoi benissimo creare le textbox di cui hai bisogno, dando loro nomi diversi (che ne so, text1, text2, text3...). A questo punto fai generare la procedura di evento che ti interessa per la prima textbox, e assegni la procedura di evento anche alle altre textbox della "matrice". Nella procedura, il parametro "sender" (dovrebbe essere il primo) indica la textbox che ha scatenato l'evento, su cui puoi lavorare.[*]Non sai a propri qual è il numero di textbox. In questo caso devi generare a runtime le diverse textbox e assegnare loro la stessa procedura di evento, secondo lo stesso principio di sopra.[/list=1]

    Non c'è una maniera piu semplice e dinamica per recuperare tutti i controlli textbox come matrice? Le matrici non esistono piu in vb.net? Quindi li posso inserire in un vettore, lista o qualcosa di simile? Sarei curioso di capire come..
    Tony

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da tony83
    Non c'è una maniera piu semplice e dinamica per recuperare tutti i controlli textbox come matrice? Le matrici non esistono piu in vb.net? Quindi li posso inserire in un vettore, lista o qualcosa di simile? Sarei curioso di capire come..
    Eseguire un ciclo sui controlli del Form, o del contenitore delle TextBox, e accedere alle proprietà del controllo una volta determinato che si tratta di un TextBox appartenente al gruppo di interesse?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    ho capito questa è l'unica maniera un for prendo tutti i controlli che mi interesso e ci lavoro... Certo peccato che hanno eliminato però le matrici come si faceva con il vecchio vb 6

    ciao grazie


    Tony

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da tony83
    ho capito questa è l'unica maniera un for prendo tutti i controlli che mi interesso e ci lavoro... Certo peccato che hanno eliminato però le matrici come si faceva con il vecchio vb 6
    Non è l'unica maniera. E' quella più semplice che mi sento di suggerirti proprio per la sua semplicità.

    Ovviamente, ci sono tanti altri modi, come ad esempio la loro creazione dinamica, l'inserimento in una lista ArrayList già pronta da scandire e così via.

    Per quanto riguarda le matrici di controlli, pur trattandosi di una grande semplificazione, credo se ne possa tranquillamente fare a meno.

    Non ne ho mai avuto bisogno in tanti anni di Delphi, non penso che siano quindi indispensabili per la creazione di un'applicazione, tant'è che con poco codice si riesce tranquillamente a riprodurne il funzionamento a cui si aggiunge il fatto che, con un'apertura come quella fornita generalmente dai linguaggi OOP quali sono VB.NET e C#, nulla vieta di realizzare strutture anche più complesse, come vettori di controlli appartenenti a tipi differenti, quindi eterogenei, con eventi in comune che discriminano il controllo generatore, oppure la memorizzazione dei riferimenti ai controlli cui si vuole accedere in "modo indicizzato" in strutture che non siano una matrice o un vettore, ma anche Hashtable e affini.

    In sostanza, credo che per il grado di libertà offerto da VB.NET, C# e tutti gli altri linguaggi OOP, si possa tranquillamente rinunciare alla matrice di controlli più che volentieri.

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

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

  10. #10
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Originariamente inviato da tony83
    ho capito questa è l'unica maniera un for prendo tutti i controlli che mi interesso e ci lavoro... Certo peccato che hanno eliminato però le matrici come si faceva con il vecchio vb 6

    ciao grazie


    Effettivamente, se i controlli sono già sul form, esisterebbe anche un altro modo... sfruttare la parola chiave "Handles", che, in pratica, indica a quale evento reagisce la procedura di evento scritta, una cosa del tipo

    codice:
    Private Sub procedura_evento_click(ByVal sender As......) Handles casellaTesto.Click
    Se ad esempio vuoi che questa procedura reagisca all'evento Click delle due textbox t1 e t2, si può scrivere
    codice:
    Private Sub procedura_evento_click(ByVal sender As......) Handles t1.Click, t2.Click
    Oppure, se le textbox sono state generate dinamicamente, puoi assegnare loro la stessa procedura di evento con un ciclo del tipo (ad esempio per il doppio clic)
    codice:
    For Each ctrl As Control In Me.Controls
    				If TypeOf ctrl Is TextBox Then
    					AddHandler ctrl.DoubleClick, New EventHandler(AddressOf ProcDoppioClick)
    				End If
    			Next
    in cui ProcDoppioClick è la procedura di evento comune. Per ottenere il controllo che ha scatenato l'evento basta usare (se ad esempio è una TextBox) basta convertire il sender con CType(sender, TextBox).
    Svegliati, Neo. Matrix ti possiede...

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.