Modifica oggetto form non applicata

lunedì 27 gennaio 2014 - 18.24
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  Windows XP  |  Visual Studio 2008  |  MySQL 5.1

Zixower Profilo | Newbie

Ho la seguente procedura in una classe:

Public Sub Converti_TextBox(ByRef Maschera As System.Windows.Forms.Form, _ ByRef Oggetto As System.Windows.Forms.TextBox) ' Toglie la textbox dai controlli della maschera Maschera.Controls.Remove(Oggetto) ' Memorizza i dati della textbox, poi la converte e recupera i ' dati memorizzati Oggetto = New Nuovo_Tipo [codice in cui configuro le proprietà del nuovo tipo] ' Inserisce nuovamente l'oggetto nei controlli della maschera Maschera.Controls.Add(Oggetto) End Sub

Il problema che incontro è che nella maschera mi rimane l'oggetto invariato (Nuovo_Tipo è un tipo TextBox derivato). Se richiamo il .Dispose di Oggetto prima della New Nuovo_Tipo, cioé:

Oggetto.Dispose Oggetto = New Nuovo_Tipo

nella maschera sparisce l'oggetto TextBox e non viene inserito quello nuovo.

Mi serve modificare il tipo dell'oggetto, mantenendo il riferimento di memoria, cioè il controllo che è stato passato nel parametro Oggetto alla fine deve puntare al nuovo oggetto creato con la tipologia Nuovo_Tipo.

Grazie.

---- MOFICA DEL 30-01-2014 ----

Errore stupido mio, trovato l'inghippo. Nella maschera c'è un SplitContainer e gli oggetti che passavo erano contenuti nei suoi pannelli, per questo motivo il problema stava nella rimozione dell'oggetto ed il suo reinserimento nella maschera, dato che non facevano parte dei suoi controlli, ma dei controlli dei pannelli dello SplitContainer.
Ho risolto creando una procedura ricorsiva che cerca l'oggetto all'interno di tutti i contenitori della maschera e lo rimuove, restituendo il contenuitore trovato. Dopo riassegno l'oggetto con il nuovo tipo allo stesso contenitore:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5