Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111

    Copia da controllo personalizzato

    Ho un controllo personalizzato che ho chiamato MultiBox, il cui nome è "Dato"
    Al suo interno c'è una Label e una TextBox che si chiamano rispettivamente "Label" e "TextBox"

    codice:
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is MultiBox And ctrl.Name = "Dato" Then                      
                    Dim tb As TextBox = DirectCast(ctrl, TextBox)  
                        If tb IsNot Nothing Then
                        tb.Copy()  
                    End If
                 End If
            Next
    Vorrei copiare il contenuto della textbox.
    Il problema è accedere all'interno della Multibox, dovrebbe essere la riga che ho evidenziato in rosso.
    Come faccio ad accedere a Dato.Textbox.Text?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quando hai scritto il controllo dovevi prevedere l'accesso pubblico al textbox oppure dei metodi/proprietà attraverso cui accedere.

    Il problema quindi si sposta al codice del controllo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314

    Re: Copia da controllo personalizzato

    Originariamente inviato da Stibbert
    Ho un controllo personalizzato che ho chiamato MultiBox, il cui nome è "Dato"
    Al suo interno c'è una Label e una TextBox che si chiamano rispettivamente "Label" e "TextBox"

    codice:
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is MultiBox And ctrl.Name = "Dato" Then                      
                    Dim tb As TextBox = DirectCast(ctrl, TextBox)  
                        If tb IsNot Nothing Then
                        tb.Copy()  
                    End If
                 End If
            Next
    Vorrei copiare il contenuto della textbox.
    Il problema è accedere all'interno della Multibox, dovrebbe essere la riga che ho evidenziato in rosso.
    Come faccio ad accedere a Dato.Textbox.Text?

    Grazie.
    Per quel che ne so...proprio con "Dato.Textbox.Text"....
    Il ciclo sui controlli non servirebbe visto che ti serve il testo di un unico controllo conosciuto, almeno da quanto ho intuito.
    Comunque hai fatto un pò di confusione, devi accedere alla TextBox attraverso il controllo padre e non "direttamente", inoltre con il DirectCast cerchi di convertire due controlli diversi quindi è un errore.
    Corretto sarebbe:
    codice:
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is MultiBox And ctrl.Name = "Dato" Then
                    Dim MBox As MultiBox = DirectCast(ctrl, MultiBox)
                    Console.WriteLine(MBox.TextBox1.Text)
                End If
            Next
        End Sub
    Prendi anche in considerazione l' opportunità di aggiungere al tuo controllo una proprietà o routine adatta allo scopo.
    Ciao

  4. #4

    Moderazione

    Il linguaggio di riferimento (e relativa versione) va sempre specificato (anche nel titolo, sotto forma di "tag"); correggo io, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Scusate se non ho rsisposto prima, ma ho avuto da fare...
    Dopo che ho risolto il problema.

    Per MItaly: Scusa ma tutte le volte me lo dimentico. Prevedo che mi dovrai rimproverare ancora molte volte.

    Per Oregon: Non volevo mettere la gestione degli eventi all'interno del controllo perchè vincola troppo poi la gestione dal form.

    Per Vinsent: Il codice è corretto, ma ho sbagliato nella conversione.
    La risposta giusta è:

    codice:
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is MultiBox And ctrl.Name = "Dato" Then                      
                    Dim tb As MultiBox = DirectCast(ctrl, MultiBox)  
                        If tb IsNot Nothing Then
                        tb.TextBox.Copy()  
                    End If
                 End If
            Next
    Peccato... per questa volta non avete vinto la bambolina che era in palio per la risposta esatta, ma riprovate fiduciosi, presto farò un'altra domada strana...

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.