Gestione panel e controlli utente

venerdì 22 maggio 2009 - 10.43

Samb1985 Profilo | Junior Member

Nella mia applicazione ho un panel principale su cui inserisco i diversi controlli utenti associati alle varie schermate.
Il panel principale contiene un'immagine al centro. Quando apro una schermata e carico un controllo utente, l'immagine viene cancellata.
Vorrei che quanto faccio this.Dispose() per chiudere il controllo utenti si ritorni al Panel con la foto. Non so come recuperarla visto che la devo cancellare al caricamento del controllo utente per non farla visualizzare.

Come posso risolvere ?

Anonimo Profilo | Senior Member

Perdonami non ti ho capito molto puoi essere un attimino più chiaro e postare del codice? ciao.

Samb1985 Profilo | Junior Member

Allora all'interno del panel (pnlMain) principale:

UserC prova = new UserC();
prova.Dock = DockStyle.Fill;
pnlMain.Controls.Clear();
pnlMain.Controls.Add(prova);

Poi dalla schermata associata a UserC cliccando su un pulsante "Esci" faccio this.Dispose();

Avendo fatto pnlMain.Controls.Clear(); ho perso la foto contenuta inizialmente sul panel e non so come recuperarla.

Anonimo Profilo | Senior Member

Beh salvatela in un file temporaneo prima di fare clear la classe image fa a caso tuo.

Samb1985 Profilo | Junior Member

Come si fa a salvarla su un oggetto Image ?
Poi come faccio a reinserirla sul pnlMain, visto che il this.Dispose() lo eseguo da un UserControl ?

Anonimo Profilo | Senior Member

Allora se nel tuo pannello hai un controllo PictureBox che si chiama picBox basterà fare:

Image img = picBox.Image; img.Save("C:\001.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);

per riassegnarla:

Image img = Image.FromFile("C:\001.jpg"); picBox.Image = img2;

Se hai dubbi chiedi pure.

Samb1985 Profilo | Junior Member

Allora prima cosa non posso specificare il path assoluto, e con il relativo non funziona.
Secondo il riassegnamento se lo faccio nell'evento dove chiudo lo user control con this.Dispose() , pnlMain non è un oggetto conosciuto essendo definito nella Form1 uniziale.
Quindi non saprei in che punto fare il riassegnamento.

Anonimo Profilo | Senior Member

Beh il tuo problema non è complesso, basta crearsi un po' di proprietà per settare ed esporre oggetti utili allo scopo, ma senza codice è un po' complicato aiutarti nel concreto, posso solo dirti a livello teorico.

Samb1985 Profilo | Junior Member

Proprietà di che tipo ? dove le devo impostare ?

Anonimo Profilo | Senior Member

Prima cosa adatta il contenuto dell'esempio che segue al tuo caso perchè ancora mi è oscuro come è fatto il tuo controlo personalizzato, cosa usi per visualizzare l'immagine?

Detto ciò il tuo controllo personalizzato dovrà esporre delle proprietà del genere:

public Image immagine
{
get { return picBox.Image; }
set { picBox.Image = value; }
}

poi nel tuo form o pagina web che sia puoi scrivere come ti avevo già illustrato nelle risp precedenti con l'unica differenza che per accedere all'immagine al posto che

Image img = picBox.Image;

scriverai

Image img = myCustomControl.immagine;

e per riassegnarla:

myCustomControl.immagine = img2;

Spero di essere stato più chiaro.


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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5