Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Creazione serie di controlli in modo dinamico- Visual Basic 2008

    Cara Amici del Forum
    sono nuovo alla programmazione in Visual Basic e devo dire che i testi che si trovano in commercio non sono mai sufficientemente approfonditi.

    Vorrei che mi aiutaste a risolvere un problema.

    In un form ho inserito un controllo TabControl al quale vengono create della TabPages dinamicamente in base alle indicazioni date dall'utente.
    Dopo la creazione delle TabPages devo inserire in ognuda di queste una controllo DataGridView.

    Ho trovato il modo di creare le TabPages, ma non riesco a creare una serie di DataGridView.

    Potete indicarmi un modo per creare dinamicamente una serie di controlli e come assegnare a questi un nome così da poterle poi inserire ognuna in una TabPages? Grazie

  2. #2
    questa è la dichiarazione:
    private miodatagrid as datagrid

    All'interno dell'evento che deve gestire il codice invece scrivi:

    miodatagrid=new datagrid
    miodatagrid.name="nome"
    tabpages1.controls.add(datagrid)

    Se hai bisogno ulteriori info ...siamo qui.
    Ciao

  3. #3
    Ti ringrazio molto per la risposta.
    Ma devo inserire quel codice per ogni TabPages del TabControl?
    potresti postarmi una frazione di codice intero? saresti molto gentile, sono agli inizi e trovo alcune difficoltà.
    Ti ringrazio sinceramente.

  4. #4
    Inserisci un Form VUOTO al tuo progetto e sostituisci TUTTO il contenuto con questo codice:

    codice:
    Public Class FormControlliRunTime
        Private Button1 As New Button
        Private TabControl1 As New TabControl
        Private myDatagrid As DataGridView
        Private myLabel As Label
    
        Private Sub Form4_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.Size = New Size(800, 500)
            Button1.Text = "Aggiungi Griglie"
            Button1.Location = New Point(10, 10)
            TabControl1.Location = New Point(10, 60)
            TabControl1.Size = New Size(600, 300)
            TabControl1.TabPages.Add(New TabPage With {.Text = "TabPages1"})
            TabControl1.TabPages.Add(New TabPage With {.Text = "TabPages2"})
            AddHandler Button1.Click, AddressOf Button1_Click
            Me.Controls.Add(Button1)
            Me.Controls.Add(TabControl1)
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            For Each tb In TabControl1.TabPages
                myDatagrid = New DataGridView
                myLabel = New Label
                myDatagrid.Name = "Griglia " & TabControl1.TabPages.IndexOf(tb)
                myDatagrid.Size = New Size(500, 150)
                myDatagrid.Location = New Point(0, 30)
                myLabel.Location = New Point(0, 10)
                myLabel.Text = myDatagrid.Name
                DirectCast(tb, TabPage).Controls.Add(myDatagrid)
                DirectCast(tb, TabPage).Controls.Add(myLabel)
            Next
        End Sub
    End Class
    Ovviamente cerca di capirne il senso...se hai bisogno siamo qui....
    Ciao..

  5. #5
    copiato e funziona correttamente.
    Passerò un pò di tempo a studiare il codice che mi hai postato. Se nn è disturbo in caso di dubbi torno a farmi sentire....
    sai consigliarmi un buon libro da dove imparare queste cose? ho notato che i libri di visual basic spesso sono molto generici e poco approfonditi.
    grazie ancora

  6. #6
    Prova a cercare sulla rete questi testi:
    VISUAL BASIC SPIEGATO A MIA NONNA di Mario DeGhetto
    VISUAL BASIC 2005 di Alessandro Del Sole

    E comunque usa anche la rete come integratore ai testi.

    Ciao...

  7. #7
    veramente molto gentile, grazie

  8. #8
    scusa se torno a farmi sentire.
    Ho studiato attentamente il codice da te postato.
    credo di aver capito tutto ad eccezione del comando DirectCast e della parola tb che credo sia a questo collegata in qualche modo.
    Non è che potresti spiegarmi meglio questo passaggio?
    ti ringrazio anticipatamente.

  9. #9
    In realtà la cosa più corretta sarebbe stato scrivere:

    codice:
    For Each tb as tabPage In TabControl1.TabPages
             tb.Controls.Add(myDatagrid)
             tb.Controls.Add(myLabel)
            Next
    Perchè, in questo caso, sono sicuro che il tabcontrol, contiene solo tabpages.

    Diversamente:
    codice:
    For Each ct In Me.Controls
            if ct is textbox then
            DirectCast(ct, TextBox).Enabled=False
            end if
    Next
    In questo caso la Collection Me.Controls(Me stà per il Form) è di tipo Control dal quale derivano diversi tipo di controlli(TextBox,ComboBox;etc...), quindi, a priori, io non posso sapere cosa sarà ct.
    Se ct è di tipo textbox .... eseguo un direccast che mi permette di convertire,ma sopratutto TIPIZZARE, subito la variabile ct nel tipo textbox e quindi usarne metodi e proprietà.
    Spero di essere stato chiaro
    Ciao

  10. #10
    Sei sempre molto chiaro.
    ho trovato dei libri su Visual Basic
    però non parlano della funzione DirectCast. Perché questi libri sono tutti così superficiali?

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.