Visualizzazione bottoni da codice. [VB.net]

martedì 26 aprile 2011 - 20.50
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

nijiwatanabe Profilo | Newbie

Salve a tutti, è il mio primo post qui e spero di non aver sbagliato sezione.

Dunque... Nella mia applicazione ho (Dentro ad un windows form ovviamente) un FlowLayoutPanel.
Poniamo che la mia applicazione debba controllare una cartella (Contenuta in una impostazione come stringa, chiamata per convenienza "temporaneolavoro") e mostrarmi una serie di bottoni di grandezza scelta da me tramite codice in base ai file di testo contenuti nella cartella stessa.
Ovviamente è chiaro che una volta modificata la grandezza, ho il modo di cambiare ogni aspetto poi del bottone che verrà creato. Per questo uso un ciclo di each, in questo modo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questo codice però non funziona, all'avvio l'applicazione mi cerca se l'impostazione è vuota, e difatti mi crea il messaggio. Fin qui tutto regolare, allora io, per prova aggiungo un bottone, ed all'evento click do questo codice:

FlowLayoutPanel1.Refresh()

Mi trovo quindo il pannello ed il bottone.
Ora, anche se la variabile contiene un percorso (Dopo l'avvio del programma), alla pressione del bottone non trova o elenca nessun file.

Magari è una cavolata, però vorrei creare questo pannello, ed ovviamente i bottoni saranno usabili perché conterranno poi (Un domani) dei riassunti del testo al quale saranno collegati. Ma l'importante per il momento è arrivare a crearli, questi bottoni.

Colgo l'occasione per un saluto visto che non c'è una sezione apposita.
Grazie mille per le future risposte.

luigidibiasi Profilo | Guru

Dopo aver creato il bottone devi anche crearci un handler (delegato dato che stai usando vb) che intercetti la pressione del tasto

se lo crei solo non sa cosa fare una volta cliccato...

guarda su msdn.com cercati delegati in vb e vedi come usarli
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/

nijiwatanabe Profilo | Newbie

Ok, dunque, letta la guida ma non penso sia quello che cercavo, il bottone è creato tramite editor e ha il suo handler creato già da visual studio, è un bottone tanto per test. Comunque, ho modificato il codice ed ho raggiunto un primo traguardo.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Dove "temporaneolavoro" è un'impostazione che contiene nel formato stringa un path.
Cosa succede, semplicemente all'avvio del programma mi mostra il messaggio dato che l'impostazione è vuota e non contiene dati. Fin qui è ok, accade che dopo l'avvio creo una nuova cartella, a quel punto la variabile viene riempita con un path, clicco il bottone che fa il refresh del FlowLayoutPanel1 ed appaiono le textbox a seconda di quanti files ho nella cartella. E questo è un punto di partenza, almeno si sono creati.
Ora però, il punto è uno, tanto per cominciare, perché dovrei vedermi un bel po' di roba visto la mia ignoranza in programmazione (Io sono solo un programmatore della domenica, tanto per divertimento).
Dicevo, il punto è questo:
E se io ora volessi che quelle textbox siano larghe esplicitamente 100 pixels? Noto che non me lo fa fare, visto che se provo ad usare il comando "textbox", lui - giustamente - si riferisce all'oggetto generico e non a quello specifico creato da me. Che però non ha un nome al quale riferirsi :-(
Comunque, credo proverò a creare un controllo personalizzato, anzi, ci ho provato, ma è andata male. Sicuramente sbaglio io qualcosa... Con l'editor creo il mio bel controllino, poi nel codice invece di fargli aggiungere la textbox "FlowLayoutPanel1.Controls.Add(New TextBox)" gli dico "FlowLayoutPanel1.Controls.Add(New miocontrollo)" e fin qui ci sono. Ma però ho lo stesso problema, come per la textbox, che non mi fa fare di dimensione specifica, oppure con un testo personalizzato, del controllo personalizzato non mi fa interagire con i singoli componenti che lo compongono :-(
Ma ripeto, sicuramente sono io che sbaglio lì. Comunque, visto che ci sono chiedo un'altra cosa, anche se già vi avrò rotto le scatole con tutta 'sta pappardella... Nell'ipotesi che io aggiunga al FlowLayoutPanel1 numero X textbox, ma voglio legare a questa una variabile contenente il percorso del file al quale si riferisce (Visto che ognuna di queste viene creata in base ai files che sono nella cartella, quindi è rappresentativa di un file), sarebbe complicato mi sa... Non credo me la caverei con un semplice:
Dim filescontati As String Dim bimbo = Directory.GetFiles(My.Settings.temporaneolavoro) For Each filescontati In bimbo FlowLayoutPanel1.Controls.Add(New TextBox) Dim portopathconme() = filescontati next
Bha... Intanto stanotte ci penso và XD
Grazie per la risposta ricevuta, magari era attinente ma la mia ignoranza mi fa credere che non lo sia, ma forse solo perché è spiegata in modo abbastanza complicato sulla guida, e quindi ho letto tutto, ma tutto non è ciò che ho capito :-(

whiteflash Profilo | Junior Member

perchè invece di dichiarare la nuova textbox senza parametri non la dichiari come una variabile?

così puoi accedere a tutte le proprietà ed anche agli eventi di essa...
per fare questo ci sono due metodi:

>> Classico per linea:
Dim TB as New TextBox
TB.Width = 100
TB.Text = "magia!"


>> Tutto in linea (utile se no hai tante proprietà da impostare):
Dim TB As New TextBox With {.Width = 100, .Text = "magia!"}


e infine...


FlowLayoutPanel1.Controls.Add(TB)

---------------------------------------------
Newbie esperto VB.NET 2010 e WPF
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5