Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Salvataggio del contenuto di una textbox
giovedì 19 maggio 2005 - 18.06
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
gio 19 mag 2005 - 18:06
Come faccio a salvare il contenuto di una textbox in una variabile dichiarata in una form diversa?
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 20 mag 2005 - 09:48
Devi avere visibilità sulla Form (chiamiamola F2) che contiene la variabile (Chiamiamola S visto che sarà una stringa) e la variabile deve essere dichiarata pubblica nella tua F2, cioè:
Public S as String="" 'L'inizializzazione esplicita a stringa nulla è facoltativa, ma è una buona abitudine inizializzare sempre le variabili
A quel punto dalla prima form, quella che contiene la textbox (diciamo Textbox1), scriverai:
F2.S=Me.textbox1.text
Il problema, potrebbe essere quello di riuscire a vedere F.
Se F viene dichiarato all'interno della prima form, non hai problemi, altrimenti devi dichiararlo come pubblico in un metodo.
Spero di non aver scritto troppe castronerie; è codice scritto a memoria e con sintassi non controllata, quindi mi scuso in anticipo x eventuali inesattezze. Il succo del discorso, invece, dovrebbe essere corretto!
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
ven 20 mag 2005 - 10:31
Nel primo post ho dmenticato di dire che il salvataggio del contenuto della textbox va trasferito al clic di un bottone, quindi ho inserito il codice postato nell'evento button_click.
Ora ho problemi di visibilità dela variabile:
Nella form2 (che contiene la textbox) richiamo:
Form1.percorso_loc = Me.TextBox2.Text
dove Form1 è il nome dela prima form e percorso_loc è il nome della stringa, che NON è stato possibile dichiarare Public, in quanto :
"Public" non valido in una dichiarazione di variabile
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 20 mag 2005 - 14:45
Devi dichiarare la variabile come pubblica nel posto giusto. Tu stai cercando di dichiararla come tale all'interno di una procedura, vero?
Devi dichiararla all'iniszio del codice della form.
Le prime due righe del codice saranno per esempio:
Public Class FrmEditaPrimaNota
Inherits System.Windows.Forms.Form
Qui sotto devi dichiarare le tue variabili che avranno un ambito di visibilità interno alla form, se dichiarate Private (o con Dim), mentre avranno un ambito di visibilità per tutto il progetto se Friend e addirittura per tutta la soluzione se Public.
Fammi sapre se così risolvi. Ciao.
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
ven 20 mag 2005 - 14:54
No non ho risolto, ora il messaggio di errore è:
Il riferimento ad un membro non condiviso riciede un riferimento ad un oggetto.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 20 mag 2005 - 16:11
Esattamente dove ti dà codesto errore?
Hai istanziato la form che contiene la variabile?
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
ven 20 mag 2005 - 16:20
Ricapitolando ho due form:
Form2 che contiene una textbox, e Form1 che contiene la variabile a cui voglio passare il valore dela textbox.
All'inizio della classe Form1 ho dichiarato la variabile nl modo seguente:
Inherits System.Windows.Forms.Form
Public percorso_loc As String
Sempre nella form1 al clic di un bottone si carica la form2 col metodo ShowDialog()
Nella form2 (al clic di un bottone)
Form1.percorso_loc = Me.TextBox2.Text
ed è in questo punto che mi dà errore, sufrm1.percorso_loc.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 20 mag 2005 - 17:03
Dove hai istanziato la form1?
E' l'oggetto di avvio del progetto?
Se non lanci il progetto dalla submain e non dichiari pubblica la form1, non potrai vederla dalla Form2.
Hai anche altre alternative come passare la Form1 come riferimento ad un overload della sub new della Form2, o passare, con lo stesso procedimento, la sola textxbox che ti interessa. Comunque sia, io in genere uso il primo metodo che funziona così:
1) Da Progetto ---> Proprietà cambi l'oggetto di avvio da Form1 a Sub Main
2) Da Progetto ---> Aggiungi Modulo
3) Nel modulo scriverai:
Module Module1
' ----------------- Dichiarazioni di Form -----------------------------------
Public F1 As New Form1
Public Sub Main()
Application.Run(F1)
End Sub
End Module
4) Da ora in poi, anzichè scrivere Form1.pippo, scriverai F1.pippo, dato che nel mio esempio ho dato il nome F1 all'istanza creata.
Spero che con questo tu risolva. Ciao.
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
ven 20 mag 2005 - 17:24
Ok. Grazie mille per la pazienza. Ma ora durante l'esecuzine viene generata um'eccezione di overflow, in una parte di codice generata da Windows form. Il problema persiste anche importando la System.StackOverflowexception
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 20 mag 2005 - 18:02
E' dura capire dove mettere le mani....bisognerebbe che tu chiarissi meglio dove e cosa accade. Magari postando la porzione di codice.
martinmystero
Profilo
| Newbie
22
messaggi | Data Invio:
sab 21 mag 2005 - 07:26
Ciao,
secondo me faresti prima a crearti in un modulo la variabile percorso_loc
module Variabili
Public Percorso_lo as string=""
end modulo
'....Form1
' assegni il valore quando ti pare... ma prima di premere il bottone nel Form2
' Form2
'Leggi il valore presente e lo assegni alla TexBox
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
mar 24 mag 2005 - 10:06
Grazie dellaiuto. Vi posto un po di codice; questo è il codice della prima form (vi ho indicato il punto in cui si g
enera l'eccezione)
Module Variabili
Public Percorso_loc As String = ""
End Module
Public Class Form1
Inherits System.Windows.Forms.Form
Public F1 As New Form1
Public F2 As New Form2
Public Sub Main()
Application.Run(F1)
End Sub
'Public percorso_web As String
'Public percorso_loc As String
#Region " Codice generato da Progettazione Windows Form "
Public Sub New()
MyBase.New() <- GENERAZIOE DI ECCEZIONE STACK OVERFLOW!!
...
#End region
Public Class MyPolicy
Implements ICertificatePolicy
Public Function CheckValidationResult(ByVal srvPoint As ServicePoint, _
ByVal cert As X509Certificate, ByVal request As WebRequest, _
ByVal certificateProblem As Integer) _
As Boolean Implements ICertificatePolicy.CheckValidationResult
'Return True to force the certificate to be accepted.
Return True
End Function
End Class
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MyWebClient As New WebClient
Percorso_loc = "C:\programmi"
' Dichiarazione della classe ServicePointManager
System.Net.ServicePointManager.CertificatePolicy = New MyPolicy
....
MessageBox.Show("Download avvenuto correttamente")
Process.Start("\\192.168....TOWL.mdb")
Me.Close()
End Sub
Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim f2 As New Form2
Application.Run(f2)
End Sub
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 24 mag 2005 - 10:14
Il codice delle dichiarazioni dei moduli e la sub main devi metterlo in un modulo, ad esempio il tuo modulo variabili e non nella form:
Module Variabili
Public Percorso_loc As String = ""
Public F1 As New Form1
Public F2 As New Form2
Public Sub Main()
Application.Run(F1)
End Sub
End Module
Poi, ricorda di mettere come oggetto di avvio del progetto, la sub main. Lo fai da:
Progetto ---> Proprietà
Fammi sapere. Ciao.
Akix
Profilo
| Newbie
22
messaggi | Data Invio:
mar 24 mag 2005 - 10:21
sei sicuro? Ora ho moltissime "Istruzione non valida nello spazio dei nomi", ad ogni routine chiamata ed anche nel codice generato da windows form.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 24 mag 2005 - 12:40
Sono piuttosto sicuro di quello che ti ho detto e mi torna anche che altrimenti ti dia quell'errore. Mi pare probabile che ci siano altre magagnette da tirare fuori. Se il tuo progetto non è troppo complicato e se non contiene cose che non vuoi mostrare ad altri, potresti anche proivare a postarmi tutta la cartella del progetto. Posso provare a dargli un'occhiata con calma. Vedi un po' tu. Chiaro che se è molto pesante non riuscirò ad orizzontarmici. Comunque puoi spedirlo qui: alex@aeaprato.it
Ciao.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 24 mag 2005 - 12:41
Ah...se supera i 4 o 5 megabyte, temo che non entrerà nella mailbox!
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 24 mag 2005 - 14:49
Ti ho rispedito il progettino. Dovrebbe andare. Ciao.
Torna su
Stanze Forum
Elenco Threads
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 !