Discussione:
Ctype in c#?
(troppo vecchio per rispondere)
Luigi A.
2005-01-24 09:29:18 UTC
Permalink
Ciao a tutti come si fa il ctype in c#,so che esiste il convert. però
questa linea come diventa in c#

Mymdy=ctype(me.parent,frMain).

In pratica ho un form mdi che contiene una toolbar,vorrei da un altro form
riuscire a disabilitare alcuni button della toolbar ma non mi riesce,in
vb.net sono riuscito ma in c# c'è quella istruzione che non riesco a
convertire.
Grazie
Raffaele Rialdi [MVP]
2005-01-24 09:51:05 UTC
Permalink
Post by Luigi A.
Ciao a tutti come si fa il ctype in c#,so che esiste il convert. però
questa linea come diventa in c#
Mymdy=ctype(me.parent,frMain).
Per la precisione il DirectCast di vb.net diventa il cast di C#. DirectCast
è più efficente.
Il CType è una conversione a runtime.

Per fare un cast in C# puoi usare due modi.
Puoi usare questa forma solo se il cast è verso un reference type:
Mymdy = me.parent as frMain;

Altrimenti puoi usare questo:
Mymdy = (frMain) me.parent;

La differenza tra i due è importante:
nel primo caso se la conversione non è possibile allora Mymdy sarà null. Nel
secondo caso avrai una InvalidCastException.
--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Luigi A.
2005-01-24 10:24:04 UTC
Permalink
Post by Raffaele Rialdi [MVP]
Per fare un cast in C# puoi usare due modi.
Mymdy = me.parent as frMain;
Mymdy = (frMain) me.parent;
nel primo caso se la conversione non è possibile allora Mymdy sarà null. Nel
secondo caso avrai una InvalidCastException.
Grazie anche per la spiegazione.
Ciao
Luigi A.
2005-01-24 10:32:40 UTC
Permalink
Cosa non va bene in questa porzione di codice ?

FrmMain myMDI ;
myMDI =(FrmMain) this.MdiParent ;Qui myMDI mi ritorna vuoto.
myMDI.AbilitaPulsanti();
Grazie
Raffaele Rialdi [MVP]
2005-01-24 11:06:43 UTC
Permalink
Post by Luigi A.
FrmMain myMDI ;
myMDI =(FrmMain) this.MdiParent ;Qui myMDI mi ritorna vuoto.
myMDI.AbilitaPulsanti();
Vai step-by-step con il debugger e guarda se MdiParent è valorizzata
--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Luigi A.
2005-01-24 11:17:50 UTC
Permalink
Post by Raffaele Rialdi [MVP]
Vai step-by-step con il debugger e guarda se MdiParent è valorizzata
Si in effetti è vuota .
Ma come mai ?io inizialmente gli dico:
FrmMain myMDI;
qui non dovrebbe già essere istanziata ?
Ciao
Corrado Cavalli [MVP]
2005-01-24 11:21:17 UTC
Permalink
No, viene valorizzata (a meno di errori) alla riga successiva oppure
scrivendo

FrmMain myMDI=new FrmMain();
--
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - http://www.ugidotnet.org
Weblog: http://blogs.ugidotnet.org/corrado
Luigi A.
2005-01-24 11:34:07 UTC
Permalink
Post by Corrado Cavalli [MVP]
FrmMain myMDI=new FrmMain();
Hai ragione qui c'è la new.
Ciao
Raffaele Rialdi [MVP]
2005-01-24 11:24:57 UTC
Permalink
Post by Luigi A.
Post by Raffaele Rialdi [MVP]
Vai step-by-step con il debugger e guarda se MdiParent è valorizzata
Si in effetti è vuota .
FrmMain myMDI;
qui non dovrebbe già essere istanziata ?
Hai un dubbio che non dovresti avere.
Le istanze vanno create esplicitamente: o lo fai tu con new oppure lo fa una
classe per te.
Quando scrivi FrmMain myMDI hai solo dichiarato un reference (cioè un
puntatore) a qualcosa che deve essere assegnato ad una istanza valida.

Ti consiglio di leggerti bene dei libri prima di continuare a scrivere.
Perderai meno tempo ...
--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Luigi A.
2005-01-24 11:35:24 UTC
Permalink
Post by Raffaele Rialdi [MVP]
Hai un dubbio che non dovresti avere.
Le istanze vanno create esplicitamente: o lo fai tu con new oppure lo fa una
classe per te.
Quando scrivi FrmMain myMDI hai solo dichiarato un reference (cioè un
puntatore) a qualcosa che deve essere assegnato ad una istanza valida.
Ti consiglio di leggerti bene dei libri prima di continuare a scrivere.
Perderai meno tempo ...
Hai perfettamente ragione,infatti sto seguendo un corso su vb.net ed intanto
mi leggo il libro di Balena,in effetti alcune cose mi sono poco chiare.
GRazie :-)
Luigi A.
2005-01-24 13:00:29 UTC
Permalink
FrmMain myMDI=new Frmmain ;
myMDI =(FrmMain) this.MdiParent myMDI.AbilitaPulsanti();
Grazie
Qualcosa non gira quando vado sulla sub AbilitaPulsanti lui non fa nulla
anche perchè vedo che la mia toolbar che sta nella main è sempre
disabilitata,questo mi fa pensare che lo faccio in una istanza sbagliata,o
meglio dovrei recuperare l'istanza corrente del mio formMdi e fare tutto su
quell'istanza voi che ne dite?
Ciao
Raffaele Rialdi [MVP]
2005-01-24 21:40:03 UTC
Permalink
Post by Luigi A.
FrmMain myMDI=new Frmmain ;
myMDI =(FrmMain) this.MdiParent myMDI.AbilitaPulsanti();
Grazie
Qualcosa non gira quando vado sulla sub AbilitaPulsanti lui non fa
nulla anche perchè vedo che la mia toolbar che sta nella main è sempre
disabilitata,questo mi fa pensare che lo faccio in una istanza
sbagliata,o meglio dovrei recuperare l'istanza corrente del mio
formMdi e fare tutto su quell'istanza voi che ne dite?
direi ... incomprensibile ... devi fare un po' di debugging e capire passo
passo che cosa succede di diverso rispetto a ciò che vuoi.
--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Luigi A.
2005-01-31 10:21:16 UTC
Permalink
Post by Raffaele Rialdi [MVP]
direi ... incomprensibile ... devi fare un po' di debugging e capire passo
passo che cosa succede di diverso rispetto a ciò che vuoi.
Si sbagliavo non rendevo pubblico l'oggetto interessato.
Ciao

Loading...