Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    [vb.net] mediante reflection impostare una property

    codice:
    Dim src As String = "~/controlli_utente/orologio/orologio.ascx"
    Dim c As Control = Me.LoadControl(src)
    
    Dim asm As Assembly = Compilation.BuildManager.GetCompiledAssembly(src)
    Dim t As Type = asm.GetType("orologio")
    
    Dim p1 As PropertyInfo = t.GetProperty("aOraVisibile")
    p1.SetValue(c, False, Nothing)
    
    Me.Form.Controls.Add(c)
    Questo codice funziona. La classe orologio ha una property booleana "aOraVisibile" che riesco a impostare mediante reflection.

    Il problema nasce quando debbo impostare una property di tipo più complesso, per esempio Label.
    In questo caso, il codice di sotto non funziona.
    codice:
    Dim p2 As PropertyInfo = t.GetProperty("aLabelOrario")
    Dim l As New Label()
    l.Font.Size = FontUnit.Point(36)
    l.ForeColor = Color.Red
    p2.SetValue(c, l, Nothing)
    come si potrebbe fare?

    Pietro

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho scoperto l'errore.
    In pratica prima recupero il valore dell'oggetto, poi lo modifico.

    codice:
    'recupero il valore della proprietà
    Dim p2 As PropertyInfo = t.GetProperty("aLabelOrario")
    Dim l As Label = DirectCast(p2.GetValue(c, Nothing), Label)
    
    'modifico alcuni valori
    l.Font.Size = FontUnit.Point(36)
    l.ForeColor = Color.Red
    
    'reimposto il valore
    p2.SetValue(c, l, Nothing)
    
    Me.Form.Controls.Add(c)
    Pietro

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.