View Full Version : [VB.Net] Null Reference Exeption
birmarco
24-09-2009, 22:05
Ciao a tutti. Ho un problema con un programma che sto scrivendo. Fino a ieri funzionava tutto bene ma oggi le stesse righe di codici generano l'errore indicato nel titolo.
Posto il Codice:
Private Sub btnBold_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBold.Click
Dim Stile As System.Drawing.FontStyle
Stile = Testo.FontStyleSet(textMain.SelectionFont.Style, FontStyle.Bold, textMain.SelectionFont.Bold)
textMain.SelectionFont = New Font(textMain.Font, Stile)
End Sub
A Testo.FontStyleSet fa riferimento alla funzione
Public Function FontStyleSet(ByVal Stile As System.Drawing.FontStyle, ByVal variazione As System.Drawing.FontStyle, ByRef Applica As Boolean) As System.Drawing.FontStyle
If Applica = False Then
Stile = Stile + variazione
Return Stile
Else
Stile = Stile - variazione
Return Stile
End If
End Function
Insomma. Premendo il pulsante bold faccio diventare in grassetto o meno il testo evidenziato di una RichTextBox. Fino a ieri andava perfettamente. Oggi stranamente no. :confused: HO solo aggiunto i pulsanti italico, sottolineato ecc e il menù a tendina dei font . Possibile che mi dia quell'errore alla riga evidenziata in rosso?
Ho provato a cancellare e rimettere la richtextbox (si chiama textMain).
Grazie a tutti
Ok, ma fornisci tutte le info utili : che cos'è Testo ?
Provando il tuo codice, giustamente VB protesta con un "Nome Testo non dichiarato"... :stordita:
Se, come penso, "Testo" è il nome della Form, o dell'Applicazione, evidentemente lo hai cambiato. Dal momento che è una Public Function, inoltre è superfluo :
Stile = FontStyleSet(textMain.SelectionFont.Style, FontStyle.Bold, textMain.SelectionFont.Bold)
;)
birmarco
25-09-2009, 15:08
Ok, ma fornisci tutte le info utili : che cos'è Testo ?
Provando il tuo codice, giustamente VB protesta con un "Nome Testo non dichiarato"... :stordita:
Se, come penso, "Testo" è il nome della Form, o dell'Applicazione, evidentemente lo hai cambiato. Dal momento che è una Public Function, inoltre è superfluo :
Stile = FontStyleSet(textMain.SelectionFont.Style, FontStyle.Bold, textMain.SelectionFont.Bold)
;)
oh, scusa!!! non ci ho fatto caso... Testo è una variabile di tipo classe. Le funzioni si trovano in un file diverso in cui sono organizzate per namespace e classi. Testo è appunto la classe che contiene la funzione. L'ho dichiarata più sopra la sub btnBold_Click
Nel file principale
Public Testo As TextTransformation.Font.Stili
Nel file delle funzioni (successivamente diventerà una dll....)
Namespace TextTransformation
Namespace Font
Public Class Stili
Public Function FontStyleSet(ByVal Stile As System.Drawing.FontStyle, ByVal variazione As System.Drawing.FontStyle, ByRef Applica As Boolean) As System.Drawing.FontStyle
'Riceve stile, sua variazione, se aggiungo o tolgo qualche proprietà
If Applica = False Then
Stile = Stile + variazione
Return Stile
Else
Stile = Stile - variazione
Return Stile
End If
End Function
'...
End Class
'...
End Namespace
'...
End Namespace
Allora direi che è abbstanza chiaro il perchè : la Function non è statica ( non è una Public Function in un modulo ), ed è un metodo di una classe che non è statica, ragion per cui, per poterla usare dovrai avere almeno un'istanza della classe :
Public Testo As New TextTransformation.Font.Stili
Ovviamente VB non trovando l'istanza ti da errore... ;)
birmarco
25-09-2009, 16:15
Allora direi che è abbstanza chiaro il perchè : la Function non è statica ( non è una Public Function in un modulo ), ed è un metodo di una classe che non è statica, ragion per cui, per poterla usare dovrai avere almeno un'istanza della classe :
Public Testo As New TextTransformation.Font.Stili
Ovviamente VB non trovando l'istanza ti da errore... ;)
Grazie 1000!!! Ho risolto!! :D Era una cosa troppo stupida!! :D
Vorrei approfittare ancora di te per una cosa... :D Tempo fa ti chiesi riguardo l'accesso alle API con user32.dll in windows a 64bit....
http://www.hwupgrade.it/forum/showthread.php?t=1991901
All'epoca del post mi dissi che non ti occupavi di sistemi a 64bit... Ho continuato a fare ricerche a proposito ma proprio non trovo niente... forse sbaglio anche ad usare termini di ricerca visto che non so bene quali usare... :D Ha qualche novità a distanza di 4 mesi?? :D
Sì, ricordo quella discussione.
Mah, i 64 bit non sono certo una mia priorità, e dal momento che tutte le versioni di VS, inclusa l'imminente 2010, sono a 32 bit, direi nemmeno di MS. :D
Purtroppo devo risponderti che non ho notizie fresche.
Il prossimo ( e primo ) S.O. a 64 bit che proverò sarà Win7, dato che Vista mi rifiuto di usarlo e credo ci siano tutti i presupposti ( ma solo se Win7 sarà davvero una svolta, il che è tutto da provare ) che finirà nel cestino come già avvenne, e giustamente, per WinME...
birmarco
25-09-2009, 21:52
Sì, ricordo quella discussione.
Mah, i 64 bit non sono certo una mia priorità, e dal momento che tutte le versioni di VS, inclusa l'imminente 2010, sono a 32 bit, direi nemmeno di MS. :D
Purtroppo devo risponderti che non ho notizie fresche.
Il prossimo ( e primo ) S.O. a 64 bit che proverò sarà Win7, dato che Vista mi rifiuto di usarlo e credo ci siano tutti i presupposti ( ma solo se Win7 sarà davvero una svolta, il che è tutto da provare ) che finirà nel cestino come già avvenne, e giustamente, per WinME...
Be... VS è a 32bit però contiene anche versioni a 64bit dei tool e può comunque far girare applicativi 64bit... :) Peccato che tu non ti dedichi ai 64bit!!! :D Altrimenti adesso mi potresti aiutare :D Cmq ti consiglio di passare subito ai 64bit indipendentemente dal fatto che programmi a 32 o a 64; ti consiglio anche di passare a 7 o almeno a Vista :D ovviamente a 64bit! :) Nel complesso sono buoni... vista era la svolta.. se speri in 7 rimarrai deluso... nonostante ciò un passaggino ce lo farei :)
Be... VS è a 32bit però contiene anche versioni a 64bit dei tool e può comunque far girare applicativi 64bit... :) Peccato che tu non ti dedichi ai 64bit!!! :D Altrimenti adesso mi potresti aiutare :D Cmq ti consiglio di passare subito ai 64bit indipendentemente dal fatto che programmi a 32 o a 64; ti consiglio anche di passare a 7 o almeno a Vista :D ovviamente a 64bit! :) Nel complesso sono buoni... vista era la svolta.. se speri in 7 rimarrai deluso... nonostante ciò un passaggino ce lo farei :)
Win7 lo proverò molto volentieri, anche se sinceramente non è che mi aspetto granchè. Vista più che altro era la... Sv...ista ! :D
L'ultima riprova l'ho avuta con il portatile ( un Toshiba X200, saggiamente scelto perchè dotato di tutti i drivers per Vista e XP ;) ). Beh, non c'è confronto, con XP è una scheggia, con Vista è una delusione, nonostante come hardware sia un missile...
birmarco
26-09-2009, 13:20
Win7 lo proverò molto volentieri, anche se sinceramente non è che mi aspetto granchè. Vista più che altro era la... Sv...ista ! :D
L'ultima riprova l'ho avuta con il portatile ( un Toshiba X200, saggiamente scelto perchè dotato di tutti i drivers per Vista e XP ;) ). Beh, non c'è confronto, con XP è una scheggia, con Vista è una delusione, nonostante come hardware sia un missile...
be... i portatili lasciamoli stare... :) si invasano anche con '98 :sofico:
be... i portatili lasciamoli stare... :) si invasano anche con '98 :sofico:
No no, tiriamoli in ballo invece. :)
Presente l'X200 ? Dual Core massiccio, Dischi SATA a 7200 Rpm, SLI, ecc... Ci ho giocato splendidamente a Dead Space a 1680x1050 con opzioni grafiche al max, tanto per dire...
Con XP mi sembra di stare su un Pc desktop di fascia medio-alta, con Vista ( secco ) sembra un portatile di 3 o 4 anni fa !
Con Vista + tutte le "INUtility" preinstallate, poi, da buttare proprio. :tapiro:
birmarco
26-09-2009, 14:28
No no, tiriamoli in ballo invece. :)
Presente l'X200 ? Dual Core massiccio, Dischi SATA a 7200 Rpm, SLI, ecc... Ci ho giocato splendidamente a Dead Space a 1680x1050 con opzioni grafiche al max, tanto per dire...
Con XP mi sembra di stare su un Pc desktop di fascia medio-alta, con Vista ( secco ) sembra un portatile di 3 o 4 anni fa !
Con Vista + tutte le "INUtility" preinstallate, poi, da buttare proprio. :tapiro:
ah be... sono i SO preinstallati a fare danni. Ti assicuro che se ci metti un vista 64 pulito SP2 vai una meraviglia. Poi va be, 7 va meglio... cmq XP è vecchio... anche per programmare credo... se uno vuole intraprendere strade "moderne" nel rapportarsi al sistema con XP non può... (DX per esempio...) anche se è più difficile che uno programmi a questi livelli non bisogna dimenticarlo :) Vista sui desktop gira benissimo...
Se cerchi portatili possenti dai un'occhiata alla serie G90 di ASUS e successivi, il G90 adotta un e6600 (la versione desktop!) overclockato in modo dinamico con RAM overclockate ecc... insomma.... la batteria 6 celle dura 34' talmente è potente :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.