Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    44

    [VB 2008] Convertire String in Object

    Ciao a tutti,

    sono bloccato da ore su questo problema.

    Come faccio a usare una label per poi richiamare un object? esempio


    Dim aaa As Object
    aaa = "label0"
    aaa.Text = "Test"


    l'errore che mi appare è

    Impossibile trovare il membro pubblico 'Text' nel tipo 'String'.

    Ho trovato delle soluzioni in internet per vb6 ma che non funzionano in vb2008!!! Aiutatemi please

  2. #2
    Ciao
    Per risolvere il problema del BRUTTISSIMO lavoro che stai facendo .... devi modificare il codice così:
    codice:
    Dim aaa As Object
    aaa = label0
    aaa.Text = "Test"
    Per risolvere il problema in modo moooolto più corretto(senza ricorrere ad associazione tardiva), dovresti spiegarci perchè hai questa necessità.

    Facci sapere...
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    44
    Ciao e grazie per la risposta ma sfortunatamente non è quello che cercavo. Spiego meglio il mio problema:

    Ho 2 tab "tab0" e "tab1". All'interno di ogni tab ho 1 label "label0" e "label1".

    Con un pulsante fuori dai tab voglio che cliccandolo, modifico il Text della label nel tab selezionato.

    Con il case funziona benissimo

    codice:
    Select Case TabControl.SelectedIndex.ToString
    
                Case 0
                    Label0.Text = "ciao"
                Case 1
                    Label1.Text = "ciao"
            End Select
    Così capisco il tab selezionato e se è il "tab0" cambio il testo della "label0" altrimenti tab1 / label1.


    Ora invece di far così io vorrei creare dinamicamente l'oggetto label creando quindi l'oggetto label usando una parte fissa "label" e aggiungere alla fine 0 oppure 1. Quindi:

    codice:
    ' questo mi crea una stringa che varia label0 oppure label1
    
    Dim label as Object = "label" & TabControl.SelectedIndex.ToString
    
    'qui dovrei cambiare la label
               label.Text ="ciao"

    il problema è che mi da l'errore della stringa :/

  4. #4
    Comincia a provare questo codice e dicci se è quello che ti serve poi passiamo alle spiegazioni
    codice:
      Dim lblNumber As Integer = 0
            For Each cnt As Control In Me.Controls
                If TypeOf cnt Is TabControl Then
                    For Each tp As TabPage In DirectCast(cnt, TabControl).TabPages
                        Dim lbl As New Label With {.Text = "Label" & lblNumber.ToString}
                        lblNumber += 1
                        tp.Controls.Add(lbl)
                    Next
                End If
            Next
    Il codice và inserito nell'evento click del button.

    Facci sapere...
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    44
    Originariamente inviato da Jeremy75
    Comincia a provare questo codice e dicci se è quello che ti serve poi passiamo alle spiegazioni
    codice:
      Dim lblNumber As Integer = 0
            For Each cnt As Control In Me.Controls
                If TypeOf cnt Is TabControl Then
                    For Each tp As TabPage In DirectCast(cnt, TabControl).TabPages
                        Dim lbl As New Label With {.Text = "Label" & lblNumber.ToString}
                        lblNumber += 1
                        tp.Controls.Add(lbl)
                    Next
                End If
            Next
    Il codice và inserito nell'evento click del button.

    Facci sapere...
    Ciao
    hmmm no,

    questo codice crea una label in tutti i tab senza distinzione da quello selezionato o meno.
    A me serve proprio convertire la stringa ("label" & TabControl.SelectedIndex.ToString) in oggetto! Ho provato di tutto! Ctype, Cobj ...

    Ho trovato un esmepio su MSDN che utilizza anch'essi una variabile per riferirsi ad un oggetto ma non utilizzando una stringa


    codice:
    Dim ctrlActv As System.Windows.Forms.Control = Me.ActiveForm.ActiveControl
    ctrlActv.Text = "Test"
    ctrlActv.Location = New Point(100, 100)
    ctrlActv.Show()

  6. #6
    Beh ... allora il codice si riduce a questo:
    codice:
     For Each cnt As Control In Me.Controls
                If TypeOf cnt Is TabControl AndAlso Not DirectCast(cnt, TabControl).SelectedTab Is Nothing Then
                    Dim lbl As New Label With {.Text = "Label" & DirectCast(cnt, TabControl).SelectedIndex.ToString}
                    DirectCast(cnt, TabControl).SelectedTab.Controls.Add(lbl)
                End If
            Next
    Facci sapere...
    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    44
    erm no,

    cioè si ora c'è la distinzione tra tab selezionato o meno, ma la tua soluzione crea una nuova Label e non cambia quella già esistente. Forse non mi ero spiegato bene io ma esiste già una label e io devo cambiare il text della label nel tab selezionato.

    Grazie mille per l'aiuto


    ps. ho fatto delle proveil tuo ultimo codice e modificandolo nel seguente modo effettua la tua stessa modifica


    codice:
    Dim lbl As New Label With {.Text = "Label" & TabControl.SelectedIndex.ToString}
            TabControl.SelectedTab.Controls.Add(lbl)

  8. #8

    codice:
     For Each cnt As Control In Me.Controls
                If TypeOf cnt Is TabControl AndAlso Not DirectCast(cnt, TabControl).SelectedTab Is Nothing Then
                    For Each lbl As Control In DirectCast(cnt, TabControl).SelectedTab.Controls
                        If TypeOf lbl Is Label Then
                            lbl.Text = "Label" & DirectCast(cnt, TabControl).SelectedIndex.ToString
                        End If
                    Next
                End If
            Next
    Ora dovresti avere un pò di esempi che ti spiegano il concetto di iterazione dei controlli in un contenitore(form,tabcontrol,tabpage,etc...).
    Lavoraci un po su e poi ..... facci sapere...
    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    44
    oh cribbio funzia!!!! Grazie ora lo modifico un po'

    grazie mille!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.