Newsgroup: it.comp.lang.visual-basic
Titolo: Problema ..strano?

Ciao a tutti, volevo il vostro supporto per un problemino al quale non 
ne vengo a capo...
Si tratta della mia prima applicazione, stavo tentando di fare una 
calcolatrice, in breve il problema è il seguente:
Se io inserisco le variabili subito dopo il public class form1, quando 
vado ad eseguire il programma mi riporta l'errore:
Eccezione first-chance di tipo 'System.NullReferenceException' in 
Calcolatrice.exe
Sia se le inserisco come Public, sia come Dim
Public Class Form1
    Public uno As Integer = TextBox1.Text
    Public due As Integer = TextBox2.Text
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
        TextBox1.Text = TextBox1.Text + ("1")
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button2.Click
        TextBox1.Text = TextBox1.Text + ("2")
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button3.Click
        TextBox1.Text = TextBox1.Text + ("3")
    End Sub
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button4.Click
        TextBox1.Text = TextBox1.Text + ("4")
    End Sub
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button5.Click
        TextBox1.Text = TextBox1.Text + ("5")
    End Sub
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button6.Click
        TextBox1.Text = TextBox1.Text + ("6")
    End Sub
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button7.Click
        TextBox1.Text = TextBox1.Text + ("7")
    End Sub
    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button8.Click
        TextBox1.Text = TextBox1.Text + ("8")
    End Sub
    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button9.Click
        TextBox1.Text = TextBox1.Text + ("9")
    End Sub
    Private Sub Button10_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Button10.Click
        TextBox1.Text = TextBox1.Text + ("0")
    End Sub
    Private Sub Button11_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Button11.Click
        TextBox2.Text = TextBox1.Text
        TextBox1.Text = ("")
    End Sub
    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Button15.Click
        Dim addizione As Integer = uno + due
        TextBox1.Text = addizione
    End Sub
    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Button12.Click
        Dim sottrazione As Integer = uno - due
        TextBox1.Text = sottrazione
    End Sub
End Class
Se invece elimino le 2 righe dal public class form1 e inserisco le 
variabili ripetendole per i punti che mi interessano, in questo caso
    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Button15.Click
        Dim uno As Integer = TextBox1.Text
        Dim due As Integer = TextBox2.Text
        Dim addizione As Integer = uno + due
        TextBox1.Text = addizione
    End Sub
    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles Button12.Click
        Dim uno As Integer = TextBox1.Text
        Dim due As Integer = TextBox2.Text
        Dim sottrazione As Integer = uno - due
        TextBox1.Text = sottrazione
    End Sub
Facendo così l'applicazione mi funziona...
Sto leggendo un manuale ecc.. però se non mi aiutate non ne vengo a 
capo :D
Grazie a tutti!

[CUT ALL]
Public o Private non c'entrano niente.
Il problema č che quando istanzi la classe form1 provi ad assegnare a due 
variabili il valore di tue textbox che valgono Null
Puoi provare a dichiarare le variabili cosi:
Public uno As System.Nullable(Of Integer) = textbox1.text
Public due As System.Nullable(Of Integer) = textbox2.text
oppure, sempre ammesso che i textbox contengano qualcosa, lasci la 
dichiarazione cosě:
Public uno As Integer = 0
Public due As Integer = 0
e nell'evento load del form gli passi i valori delle textbox.
Posso sapere che libro stai leggendo?
Ciao, Vincenzo 

 Ciao, Vincenzo
visual basic 2008 spiegato a mia nonna :D


comunque ho provato, mi ridà l'errore
Eccezione first-chance di tipo 'System.NullReferenceException' in
Calcolatrice.exe
che fare?

>visual basic 2008 spiegato a mia nonna :D
Se trovi interessante il Vb subito dopo ti consiglio di leggere un libro un 
pò più professionale come "Programmare Visual Basic 2008" di F. Balena
E ti consiglio anche di leggere un libro sul .NET Framework che è la base 
necessaria, al di la del linguaggio che andrai ad usare, per districarti al 
meglio in mezzo all'infinito mondo .NET
Ciao, Vincenzo 

Questo codice funziona:
Public Class Form1
    Private uno As Nullable(Of Integer)
    Private due As Nullable(Of Integer)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles         MyBase.Load
        uno = Convert.ToInt16(TextBox1.Text)
        due = Convert.ToInt16(TextBox2.Text)
    End Sub
End Class
Logicamente devi impostare la proprietą text dei due controlli TextBox con 
un valore numerico.
Ciao, Vincenzo 


wrote:

Ciao Vincenzo, la mia scelta per questo libro era proprio perchè
fin'ora di programmazione non avevo nessuna dimistichezza... quello
che mi hai consigliato parte da zero? Inoltre mi sapresti consigliare
un testo sul framework .net?
Sei gentilissimo, ti ringrazio.
Saluti


Saluti
Emh scusami Vincenzo, non trovo il libro da te consigliato, l'ultimo
che mi risulta di f. balena è "programmare visual basic 2005" ... puoi
darmi un link per questo testo ? Grazie!!

Sei gentilissimo, ti ringrazio.
Ci mancherebbe!
Ciao, Vincenzo 

 Ciao, Vincenzo
Ciao Vincenzo, diciamo che non mi dispiace comprare un bel manuale che
parta da 0 per imparare un po di 
vb.net
, cmq ho anche un'email bella
grossa :P mi faresti una grande cortesia se mi mandi un po di
materiale elettronico.
Per quanto riguarda il codice non mi va...però sono certo che "ci
siamo quasi" :P...
A limite ti risponderei alla tua email allegandoti tutto il progetto
così magari lo puoi guardare da vicino (sempre se ti interessa
ovviamente!)
Come posso darti il mio indirizzo email senza scriverlo quì (visto che
rischierei di annegare nello spam) ? :-)
Non so come ringraziarti!
Saluti

rischierei di annegare nello spam) ? :-)
Scusa ma non č quello che vedo scritto sui tuoi post (vedi sopra)?
Dal mio indirizzo devi solo togliere il testo #NO#FOTTUTI.... contattami 
pure che appena posso ti mando un pň di materiale e do uno sguardo al 
codice.
Ciao, Vincenzo 


Come spiegato nella seconda opzione di VincePik:
Le prime due righe vengono eseguite prima che gli oggetti textbox
vengono inizializzati, quindi non è la proprietà "Text" ad essere
Nothing, ma TextBox1 e TextBox2.
Questo problema lo noti subito se esegui il programma passo passo in
debuger.
Per ovviare il problema devi usare il costruttore della classe "New"
per avere un risultato simile:
...
    Public uno As Integer
    Public due As Integer
    Public Sub New()
        ' Chiamata richiesta da Progettazione Windows Form.
        InitializeComponent()
        ' Aggiungere le eventuali istruzioni di inizializzazione dopo
la chiamata a InitializeComponent().
        uno = TextBox1.Text
        due = TextBox2.Text
    End Sub
...
Ti rimane solo da stare attento che nelle textbox siano presenti dei
valori numerici.
CIAO, Marco.