text:
"Soviet_Mario"  wrote in message
news:4f173fbf$0$1381$4faf...@reader2.news.tin.it...

> uhm ... non ho capito la risposta (la prima parte, l'esempio delle
> interfacce si : dovrei mettere delle restrizioni nel Of Tipo As
> Interfaccia, giusto ?)
> Su quest'ultimo aspetto ora riesamino la situazione.

Non ho molto tempo adesso per cui ti faccio una rapida panoramica, poi mi
dirai tu se serve approfondire:

Quel tipo di problematica di solito si presenta quando uno vuole caricare
dll dinamicamente.  Quello che si fa di base e' avere 3 progetti: 1)
l'applicazione; 2) la/le librerie da caricare dinamicamente; 3) una class
library che entrambi i progetti 1 e 2 referenziano, che contiene
un'interfaccia per il prog. 1 in modo da invocare uno dei CreateInstance a
fare il cast appunto ad un cosiddetto contratto noto, dall'altra parte per
il prog. 2 per avere un'interfaccia da implementare nelle proprie classi
concrete.  Ulteriormente, poiche' di solito c'e' della logica comune a tutte
le eventuali librerie dinamiche, quella si implementa sempre nel prog. 3 con
una classe base che, come minimo, implementa l'interfaccia in questione e,
anche se non implementa concretamente nessuno dei suoi metodi, per lo meno
si limita a dichiararli abstract in modo da imporre alle classi derivate di
fornire una implementazione.  E ovviamente questo e' solo la base di
partenza...

> MA il discorso della classe base non ho capito che c'entri (inoltre forse
> non mi azzecca, perché dal momento che non posso usare l'ereditarietà
> multipla, proprio non riesco a farne niente dell'ereditarietà tout court,
> e mi limito a usare il pattern "HAS A" e mai "IS A", cioè piazzo un
> oggetto interno, con nome, dentro la classe che ne usa alcune
> sottostanti).

IS-A e HAS-A, servono entrambi...

-LV


title: [Wpf] Assegnre immagini a controlli Image dinamicamente

author: vbMizio

text:
Ciao a tutti,
sto iniziando a muovere i primi passi in Wpf, utilizzando VB 2008 / VB 2010
e ExpressionBlend 4.
In questo momento sto hostando un controllo ListBox Wpf in una Windows Form.
Questa ListBox utilizza un template per visualizzare dei dati, passati
tramite binding; il template ha, tra le altre cose, dei controlli Image a
cui vorrei "passare" delle immagini in base al valore di alcune proprieta'.
Ho quindi pensato di scrivere una classe che implementa la iValueConverter,
da associare al binding del controllo stesso.
Questa classe, per come l'ho pensata, dovrebbe restituire una immagine in
base al valore passato, e qui inizia il problema :-)
Ho delle immagini nelle mie risorse (ricordo che il progetto iniziale e' un
WinForm), e quindi si tratta di tipi System.Drawing.Image, mentre il
controllo Image Wpf accetta come ImageSource una
System.Windows.Media.ImageSource. Come fare a prendere l'immagine della mia
risorsa e farla restituire, dalla mia classe di conversione, come una
ImageSource?
Oppure, se mi potete indicare una strada piu' corretta, va bene lo stesso
:-)
Grazie e ciao... Maurizio


author: Raffaele Rialdi [MVP]

text:
vbMizio wrote:
> Ho delle immagini nelle mie risorse (ricordo che il progetto iniziale e' un
> WinForm), e quindi si tratta di tipi System.Drawing.Image, mentre il
> controllo Image Wpf accetta come ImageSource una
> System.Windows.Media.ImageSource. Come fare a prendere l'immagine della mia
> risorsa e farla restituire, dalla mia classe di conversione, come una
> ImageSource?
> Oppure, se mi potete indicare una strada piu' corretta, va bene lo stesso :-)
> Grazie e ciao... Maurizio
Se capisco cosa vuoi fare, devi semplicemente convertirli estraendo la
bitmap da Image di winform e creare un BitmapSource usando wpf.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


author: marcosabba

text:

vedi se può aiutarti:
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ea9a4e55-8905-4486-97fb-7981c2b75963/
ciao


text:
Ciao Raffaele e grazie della risposta,
...
>Se capisco cosa vuoi fare, devi semplicemente convertirli estraendo la
>bitmap da Image di winform e creare un BitmapSource usando wpf.
...
Beh, il passo che mi manca e' proprio quel "semplicemente" :-)
Avevo gia' trovato dei metodi che utiizzano Interop oppure il Memory Stream
(per altro come scritto nei post mostrati nel link indicato da marcosabba),
ma speravo in qualche cosa di piu' immediato.
Ho visto pero' che la cosa piu' immediata e' quella di aggiungere l'immagine
direttamente sotto forma di file al progetto, senza passare per le risorse
(come invece si fa con Winform).
Adesso sto diventando matto con questa che dovrebbe essere una cosa
semplice.
Anzi, gia' che ci sono, chiedo anche questa cosa.... :-)
Nel mio progetto Wpf, ho aggiunto una cartella di nome Images, all'interno
della quale ho inserito un file euro.png.
Sto quindi tentando di recuperare l'immagine stessa tramite:
Dim bmp As New System.Windows.Media.Imaging.BitmapImage(New
Uri("Images/euro.png", System.UriKind.Relative))
ma questo non mi recupera l'immagine stessa, viene creata una BitmapImage,
ma questa non contiene nulla.
Come mai?
Grazie a tutti, Maurizio


text:
Ciao Marco, grazie per la risposta
...
>
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ea9a4e55-8905-4486-97fb-7981c2b75963/
...
In effetti avevo trovato delle soluzioni del genere, ma speravo ci fosse
qualche cosa di piu' semplice.
Ciao e grazie... Maurizio


text:
vbMizio wrote:
> Beh, il passo che mi manca e' proprio quel "semplicemente" :-)
:)
> Avevo gia' trovato dei metodi che utiizzano Interop oppure il Memory Stream
> (per altro come scritto nei post mostrati nel link indicato da marcosabba),
> ma speravo in qualche cosa di piu' immediato.
La soluzione linkata è di tre righe, suvvia :)
> Ho visto pero' che la cosa piu' immediata e' quella di aggiungere l'immagine
> direttamente sotto forma di file al progetto, senza passare per le risorse
> (come invece si fa con Winform).
Se aggiungi come risorsa wpf il file, puoi usare la sintassi pack:// e
caricare l'immagine direttamente senza fare il travaso da winform.
È certamente la soluzione preferibile.
Per la sintassi "pack", leggi qui:
http://nerddawg.blogspot.com/2005/12/more-on-resource-loading-in-wpf.html
http://msdn.microsoft.com/en-us/library/aa970069(v=vs.85).aspx
> Dim bmp As New System.Windows.Media.Imaging.BitmapImage(New
> Uri("Images/euro.png", System.UriKind.Relative))
>
> ma questo non mi recupera l'immagine stessa, viene creata una BitmapImage, ma
> questa non contiene nulla.
> Come mai?
Occhio che deve essere marcata come Resource e non embedded resource
> Grazie a tutti, Maurizio
prego ciao



text:
Ri-ciao Raffaele,
...
>La soluzione linkata è di tre righe, suvvia :)
...
Dici che sono troppo pigro? :)
...
>Se aggiungi come risorsa wpf il file, puoi usare la sintassi pack:// e
caricare l'immagine direttamente senza fare il travaso da winform.
...
Come mai mi suggerisci di usare la pack, e non ad esempio il percorso
relativo?
...
>> Dim bmp As New System.Windows.Media.Imaging.BitmapImage(New
>> Uri("Images/euro.png", System.UriKind.Relative))
>Occhio che deve essere marcata come Resource e non embedded resource
...
Se vado a vedere le proprieta' della risorsa, alla voce "Operazione di
compilazione" (ho il VS in italiano), c'e' proprio Resource.
In ogni caso, con la sintassi pack, viene sollevata un'eccezione di risorsa
non trovata (Impossibile individuare la risorsa images/euro.png)
L'uri che ho usato e':
New Uri("pack://application:,,,/Images/euro.png")
Idee?
Grazie ancora.. Maurizio


text:
vbMizio wrote:
> Dici che sono troppo pigro? :)
:)
> Come mai mi suggerisci di usare la pack, e non ad esempio il percorso
> relativo?
pack è molto comodo quando l'immagine è dentro una dll mentre tu vuoi
andarla a prendere dall'exe
Se la guardiamo ancora più ad ampio spettro pensa ad una dll di sole
risorse che cambia a seconda della localizzazione.
> Se vado a vedere le proprieta' della risorsa, alla voce "Operazione di
> compilazione" (ho il VS in italiano), c'e' proprio Resource.
> In ogni caso, con la sintassi pack, viene sollevata un'eccezione di risorsa
> non trovata (Impossibile individuare la risorsa images/euro.png)
> L'uri che ho usato e':
> New Uri("pack://application:,,,/Images/euro.png")
> Idee?
è case sensitive ... controlla ...
> Grazie ancora.. Maurizio
Prego ciao



text:
Mi autocito:
>L'uri che ho usato e':
>New Uri("pack://application:,,,/Images/euro.png")
...
Ho risolto, ma ancora non so bene il motivo.
La stringa che ho usato per creare il nuovo Uri e':
"pack://application:,,,/WpfControls;component/Images/euro.png"
ho dovuto quindi fare riferimento esplicitamente all'assembly WpfControls,
benche' sia l'assembly che contiene, oltre naturalmente alla risorsa, la
classe che implementa la iValueConverter. La classe e la risorsa immagne,
quindi, sono nello stesso assembly; potrebbe dipendere dal fatto che
l'assembly chiamante sia un altro (quello con la WinForm)?
Grazie ancora... Maurizio


text:
Riciao,
...
>pack è molto comodo quando l'immagine è dentro una dll mentre tu vuoi
andarla a prendere dall'exe
>Se la guardiamo ancora più ad ampio spettro pensa ad una dll di sole
risorse che cambia a seconda della localizzazione.
...
Ok, grazie della delucidazione
...
>> New Uri("pack://application:,,,/Images/euro.png")
>> Idee?
>è case sensitive ... controlla ...
...
Si si, avevo pensato anche a questo e controllato.


text:
vbMizio wrote:
> potrebbe dipendere dal fatto che
> l'assembly chiamante sia un altro (quello con la WinForm)?
si, decisamente. pack è nato per risolvere questo tipo di problemi (non
che sia intuitiva la sintassi ma lo scopo è quello)
> Grazie ancora... Maurizio
Prego



title: Castle Validator e Silverlight

author: dedalus

text:
Esiste una versione di Castle.Components.Validator per Silverlight?
In generale, avete qualche framework preferito per la validazione
(Castle, FluentValidation, etc)?


title: Proxy per interfraccia web service

author: Giulio Petrucci

text:
Ciao a tutti,

sto sviluppando una applicazione che deve consumare un web service che
vive nell'ecosistema del cliente. Vorrei porer generare automaticamente
un proxy usando wsdl.exe in modo da avere in un file una interfaccia e
la definizione dei tipi e in un altro l'implementazione concreta. In
documentazione non ho trovato nulla e finora sono riuscito ad ottenere
solo la classe concreta. E' possibile? Oppure sto sbagliando approccio?

Grazie,
Giulio

--


title: Proxy per interfraccia web service

text:

Perché vuoi farlo?
Il proxy alla fine è puro codice boilerplate per risparmiarti di
smanettare sul channel.

--
Raffaele Rialdi
http://www.iamraf.net

Weblog:
http://blogs.ugidotnet.org/raffaele

Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele

UGIdotNET -
http://www.ugidotnet.org/


title: Proxy per interfraccia web service

text:
On 15/03/2012 12:21, Raffaele Rialdi [MVP] wrote:
> Perché vuoi farlo?

In questo modo posso mockare l'interfaccia.
Usando SvcUtil ad esempio, la cosa viene "out of the box".

Ciao,
Giulio

--


title: Proxy per interfraccia web service

text:
Giulio Petrucci wrote:
> On 15/03/2012 12:21, Raffaele Rialdi [MVP] wrote:
>> Perché vuoi farlo?
>
> In questo modo posso mockare l'interfaccia.
> Usando SvcUtil ad esempio, la cosa viene "out of the box".
>

Il concetto di trasparenza (cioè l'uso di un oggetto in locale o
remoto) è tipico di dcom o remoting ma totalmente inappropriato per un
servizio.
SOA ribadisce questo concetto in uno dei tenets.
Quindi occhio se fai l'errata assunzione che il servizio wcf remoto sia
assimilabile ad un oggetto remoto. Questo è falso by design in SOA.

Detto ciò, se capisco cosa vuoi fare, io evito l'uso del proxy in
diversi casi e ho una classe helper sufficientemente flessibile ai miei
scopi.

public class WCFClientSide<T> where T : class
{
// ...
		public string Invoke(Action<T> action)
		{
			try
			{
				T svc = default(T);
				var binding = WCFBindingHelper.GetBinding(_address.Uri.Scheme,
IsSecure);
				using (ChannelFactory<T> factory = new ChannelFactory<T>(binding,
_address))
				{
					svc = factory.CreateChannel();

					action(svc);
				}
			}
			catch (Exception e)
			{
				Trace.WriteLine(e);
				return e.Message;
			}
			return null;
		}
}

Per usarla faccio una cosa del genere:
WCFClientSide<ILabelsService> _myService;
...
_myService = new WCFClientSide<IMyService>(...);
dove IMyService è l'interfaccia creata da "add service reference" di
cui però non uso il proxy concreto.

infine per invocare un metodo:
MyResult res;
var res = _myService.Invoke(x => res = x.DoSomething(...));

Questa strategia mi piace perché:
- ti consente di cachare il channel se vuoi farlo
- centralizza l'accesso a wcf in un unico punto (errori, settings,
etc.)
- è terribilmente più pulito il codice che usa wcf

>
> Ciao,
> Giulio

ciao



title: Proxy per interfraccia web service

text:
Ciao Raf,

On 15/03/2012 14:09, Raffaele Rialdi [MVP] wrote:
> Il concetto di trasparenza (cioè l'uso di un oggetto in locale o remoto)
> è tipico di dcom o remoting ma totalmente inappropriato per un servizio.
> SOA ribadisce questo concetto in uno dei tenets.

Point.

> Detto ciò, se capisco cosa vuoi fare, io evito l'uso del proxy in
> diversi casi e ho una classe helper sufficientemente flessibile ai miei
> scopi.
[cut]

Mooooooolto interessante.
Ci farò un pensierino. :-)
Una domanda però te la faccio subito. Quando vuoi testare l'applicazione
su un servizio "fake" come fai?

Ciao,
Giulio

--


title: Proxy per interfraccia web service

text:
Giulio Petrucci wrote:
> Mooooooolto interessante.
> Ci farò un pensierino. :-)
>

:)

>
> Una domanda però te la faccio subito. Quando vuoi testare l'applicazione su
> un servizio "fake" come fai?
>

uno dei parametri di quell'helper che ho postato è l'address.
Quindi cambi address e lo fai puntare ad un servizio locale che simula
quello reale.
Il servizio fake ha lo stesso servicecontract (interfaccia) e
differente implementazione.
Ovviamente a scopo di test ci sono altri fattori da tenere presente
(binding, behavior, security, process identity, ...)



title: applicazione web cam + testo

author: Donato Grippo

text:
ho creato una piccola applicazione che attiva skype in web cam
vorrei mettere del testo in trasparenza che scorre mentre il video gira
tutto il giorno, senza che si blocchi il video
mi č venuto in mente lo screen saver ma trovarne uno con testo e sfondo
trasparente non č facile
c'č qualcosa di pronto in c#, o una applicazione che fa tutto questo
Grazie
Donato


title: applicazione web cam + testo

text:
Donato Grippo wrote:
> ho creato una piccola applicazione che attiva skype in web cam
> vorrei mettere del testo in trasparenza che scorre mentre il video gira tutto
> il giorno, senza che si blocchi il video
> mi è venuto in mente lo screen saver ma trovarne uno con testo e sfondo
> trasparente non è facile
>
> c'è qualcosa di pronto in c#, o una applicazione che fa tutto questo
Non saprei se esiste qualcosa di pronto.
Lo screensaver puoi escluderlo perché gira in un desktop differente ed
è totalmente isolato rispetto all'utente loggato.
Inoltre tieni conto che il video è, con tutta probabilità, una
superficie di DirectX, altrimenti avresti consumi CPU che vanno alle
stelle.
Per poter interagire in trasparenza con una superficie DirectX le cose
possono diventare piuttosto complicate.
In WPF4 il problema dell'"airspace" è stato risolto (personalmente non
ho fatto test) e qui spiega cosa bisognerebbe fare:
http://msdn.microsoft.com/en-us/library/aa970688(v=VS.100).aspx
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: invocare proprietà dal costruttore

author: GennarinOSpion

text:
ciao,

negli esempi contenuti in un testo che utilizzo al momento per imparare
c#, noto sempre che dal costruttore, si assegnano i parametri
direttamente ai campi privati della classe.

Anche se nei listati sono definite delle proprietà per accedere a tali
campi, ma non sarebbe più lecito riferirisi alle proprietà anche dal
costruttore?

grazie


title: invocare proprietà dal costruttore

author: LudovicoVan

text:
"GennarinOSpion" <
Gennari...@spy.it
> wrote in message
news:j8o6na$oms$1...@speranza.aioe.org...

Al contrario, di solito si accede ai campi privati, e questo non solo dal
construttore.

A volte non puoi proprio fare altro, ad esempio:

class MyClass
{

    private int _value;

    public int Value { get { return _value; } }

    public MyClass(int value)
    {
        _value = value;
    }

}

Comunque, personalmente mi trovo ad accedere da codice privato alle
proprieta' solo in alcuni rari casi, tra cui mi vengono in mente: le
implementationi di ToString (e quindi solo in lettura), oppure quando le
proprieta' in questione sono in effetti private o protette e servono
piuttosto ad incapsulare qualcosa che e' "ancora piu' privato dei semplici
campi privati": cioe' quando sarebbe meglio avere una nested class privata
ma ancora non ce l'ho...

Non che non si possano usare altri approcci, ma e' sempre bene avere ottimi
motivi per complicarsi la vita.  :)

HTH,

-LV


title: invocare proprietà dal costruttore

text:
Il 01/11/2011 21:31, LudovicoVan ha scritto:
> di solito si accede ai campi privati, e questo non solo dal construttore.
>
> A volte non puoi proprio fare altro, ad esempio:

Ciao,

nell'esempio da te indicato, chiaramente è l'unica strada, ma se avevi
anche la possibilità di accedere in scrittura dalla proprietà relativa
al campo privato, avresti dunque chiamato la proprietà anche dal
costruttore?

Anche perchè se ho ben capito, le proprietà (quando agiscono anche in
scrittura sul campo) possono contenere codice di validazione del valore
immesso...

giusto?

grazie


title: invocare proprietà dal costruttore

text:
"GennarinOSpion" <
Gennari...@spy.it
> wrote in message
news:j8roqd$k7g$1...@speranza.aioe.org...

> nell'esempio da te indicato, chiaramente è l'unica strada, ma se avevi
> anche la possibilità di accedere in scrittura dalla proprietà relativa al
> campo privato, avresti dunque chiamato la proprietà anche dal costruttore?

No, come ho spiegato non lo faccio praticamente mai: sicuramente non dal
costruttore (e se sono value types si rischiano anche errori di
compilazione), ma neanche da altri metodi o proprieta', salve le rare
eccezioni che nominavo.

> Anche perchè se ho ben capito, le proprietà (quando agiscono anche in
> scrittura sul campo) possono contenere codice di validazione del valore
> immesso...

Metterei il codice di validazione in un metodo privato da chiamare sia dal
setter della proprieta' che dal costruttore (o quel che sia).  E' in ogni
caso la prima cosa che mi viene in mente, visto che non riesco ad immaginare
un esempio concreto in cui mi troverei in una situazione del genere (cioe'
che il valore possa essere scritto non solo invocando il setter della
proprieta').

Guarda, per motivi legati alla strutturazione del codice, quella di accedere
*tendenzialmente solo* ai membri privati dal codice interno di un tipo, mi
sentirei di darla come una best practice.  Devo comunque dire che non l'ho
mai trovata esplicitata in nessun articolo... oppure non mi ricordo.

-LV


title: invocare proprietà dal costruttore

text:
"LudovicoVan" <
ju...@diegidio.name
> wrote in message
news:j8s9jc$4e3$1...@speranza.aioe.org...
> "GennarinOSpion" <
Gennari...@spy.it
> wrote in message
> news:j8roqd$k7g$1...@speranza.aioe.org...
>
>> nell'esempio da te indicato, chiaramente è l'unica strada, ma se avevi
>> anche la possibilità di accedere in scrittura dalla proprietà relativa al
>> campo privato, avresti dunque chiamato la proprietà anche dal
>> costruttore?
>
> No, come ho spiegato non lo faccio praticamente mai: sicuramente non dal
> costruttore (e se sono value types si rischiano anche errori di
> compilazione), ma neanche da altri metodi o proprieta', salve le rare
> eccezioni che nominavo.
>
>> Anche perchè se ho ben capito, le proprietà (quando agiscono anche in
>> scrittura sul campo) possono contenere codice di validazione del valore
>> immesso...
>
> Metterei il codice di validazione in un metodo privato da chiamare sia dal
> setter della proprieta' che dal costruttore (o quel che sia).  E' in ogni
> caso la prima cosa che mi viene in mente, visto che non riesco ad
> immaginare un esempio concreto in cui mi troverei in una situazione del
> genere (cioe' che il valore possa essere scritto non solo invocando il
> setter della proprieta').

... che un valore *da validare* possa essere scritto non solo ...

-LV



title: invocare proprietà dal costruttore

text:
Il 02/11/2011 21:40, LudovicoVan ha scritto:
> che un valore *da validare* possa essere scritto non solo ...

ok seguirò i tuoi consigli, grazie :)


title: Domanda sulle viste importate da SQL Server nel dataset...

text:
C'è il modo di riempire una vista con i dati filtrati dalla tabella padre?

Mi spiego meglio,
Ho una vista che non comprende la colonna Data, ma che mi serve avere filtrata... C'è il modo per filtrare la tabella da cui deriva la vista per poi ottenere la vista filtrata?

Grazie anticipatamente...


title: C# e excel

author: MasterControl

text:
Ciao,
utilizzando C# è possibile operare su un foglio excel allo stesso modo
di VBA, o ci sono differenze?
Non mi va di imparare VBA, ed essendo che stò studiandoi C#.....
Grazie!


title: C# e excel

text:

Il modo più 'analogo' è quello di usare Visual Studio Tools for Office
(VSTO).
Se scegli questa modalità di lavoro dovrai scaricarti dal sito MS le
PIA (Primary Interop Assembly) che ti evitano la pena di lavorare con
COM.
In questo caso è caldamente consigliato usare il framework 4.0 perché
nelle proprietà dell'assembly PIA referenziato c'è di default l'opzione
'embed interop types' a true che ti evita di dover portarti dietro le
PIA in fase di deploy.
Il modo più performante invece è di creare direttamente file in formato
docx, xlsx, pptx usando l'sdk del formato OOXML. In pratica scrivi
direttamente i file senza necessità di avere office installato.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: C# e excel

text:
Il 14/06/2011 17:06, Raffaele Rialdi [MVP] ha scritto:
> MasterControl wrote:
>> Ciao,
>> utilizzando C# è possibile operare su un foglio excel allo stesso modo
>> di VBA, o ci sono differenze?
>>
>> Non mi va di imparare VBA, ed essendo che stò studiandoi C#.....
>>
>>
>> Grazie!
>
>
> Il modo più 'analogo' è quello di usare Visual Studio Tools for Office
> (VSTO).
> Se scegli questa modalità di lavoro dovrai scaricarti dal sito MS le PIA
> (Primary Interop Assembly) che ti evitano la pena di lavorare con COM.
>
> In questo caso è caldamente consigliato usare il framework 4.0 perché
> nelle proprietà dell'assembly PIA referenziato c'è di default l'opzione
> 'embed interop types' a true che ti evita di dover portarti dietro le
> PIA in fase di deploy.
>
>
> Il modo più performante invece è di creare direttamente file in formato
> docx, xlsx, pptx usando l'sdk del formato OOXML. In pratica scrivi
> direttamente i file senza necessità di avere office installato.
>
grazie!


title: .NET Framework, quale versione in produzione ?

author: FlickerFree

text:
?Comincio io chiedendo quale versione secondo voi si puo' ragionevolmente
pensare sia sufficiente stabile per l'uso in produzione, la 3.0, la 3.5 o la
4.0 ?
FlickerFree.


author: Corrado Cavalli [MVP]

text:
FlickerFree laid this down on his screen :

Personalmente ritengo sia la 4.0


text:

Quoto Corrado.
La 4.0 è assolutamente stabile e i vantaggi sono tutti in termini di
produttività (quindi di $$$).
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


author: fausto

text:
Raffaele Rialdi [MVP] used his keyboard to write :
> FlickerFree wrote:
>> ?Comincio io chiedendo quale versione secondo voi si puo' ragionevolmente
>> pensare sia sufficiente stabile per l'uso in produzione, la 3.0, la 3.5 o
>> la 4.0 ?
>
> Quoto Corrado.
> La 4.0 è assolutamente stabile e i vantaggi sono tutti in termini di
> produttività (quindi di $$$).
Sarei anch'io della stessa opimione se non fosse che in un caso ho
avuto un degrado di performance su di un'applicazione ricompilata in
.Net 4.0.
Fausto


text:
fausto wrote:
> Sarei anch'io della stessa opimione se non fosse che in un caso ho avuto un
> degrado di performance su di un'applicazione ricompilata in .Net 4.0.
Questo è il mio pane. Sono curioso di conoscere i dettagli perché io ho
fatto dozzine di prove senza avere la minima flessione.



text:
Raffaele Rialdi [MVP] has brought this to us :
> fausto wrote:
>> Sarei anch'io della stessa opimione se non fosse che in un caso ho avuto un
>> degrado di performance su di un'applicazione ricompilata in .Net 4.0.
>
> Questo è il mio pane. Sono curioso di conoscere i dettagli perché io ho fatto
> dozzine di prove senza avere la minima flessione.
Quando ho scoperto il problema per questioni pratiche e di tempo sono
dovuto ripassare velocemente al 3.5
Appena ho due secondi ci rimetto le mani per capirne le motivazioni e
poi ti faccio il report.
Fausto


text:
fausto wrote:
> Quando ho scoperto il problema per questioni pratiche e di tempo sono dovuto
> ripassare velocemente al 3.5
> Appena ho due secondi ci rimetto le mani per capirne le motivazioni e poi ti
> faccio il report.
Grazie attendo con ansia.
Se poi riesci a mettere su una piccola repro, sarebbe perfetto.



title: ADO.NET e LINQ

text:
Ciao,

tra le due tecnologie in oggetto, quali sono le principali differenze?

LINQ può sostituire sempre
ADO.NET
 ?

grazie


title: ADO.NET e LINQ

text:
GennarinOSpion wrote:
> tra le due tecnologie in oggetto, quali sono le principali differenze?
>
> LINQ può sostituire sempre
ADO.NET
 ?
>

LINQ è lo strato più "puro" che permette di eseguire delle query a
livello di linguaggio.
LINQ permette di "pluggare" dei provider per trasformare gli expression
tree nel dialetto specifico del repository che devi interrogare.

Per accedere ad un DB esistono tanti provider: Linq to SQL (considerato
obsoleto da Microsoft), Entity Framework, e altri provider per DB
non-Microsoft.

Il provider è quello che può essere confrontato con
ado.net
, ma non
LINQ.
LINQ è in grado di esprimere qualsiasi tipo di query esprimibile in
linguaggio SQL.
Il provider può avere delle limitazioni che non lo rendono altrettanto
flessibile.

Per sopperire ad eventuali mancanze del provider, Entity Framework ti
permette di eseguire degli statement SQL diretti i cui risultati
verranno mappati alle tue classi come se la query fosse stata generata
dal provider.
L'uso di questa tecnica andrebbe ovviamente evitata in modo da non
rendere il tuo datalayer troppo specifico ad un determinato DB.

Altre tecniche per aggirare gli ostacoli sono quelle di usare delle
View (se si tratta di recuperare dati) oppure stored procedure (per
aggiornare il db).
Ancora una volta è opportuno minimizzare l'uso di queste per non
rendere specifico il datalayer.

Ado.net rimane lo strato che gli stessi provider usano alla fine per
accedere al db e quindi non si può considerare obsoleto.

Possiamo però affermare che una applicazione oggi raramente ha
necessità di usare
ado.net
, soprattutto per motivi di:
- efficienza: i predicate dinamici è difficile scriverli efficienti in
linguaggio sql
- in alcuni casi performance (ho visto query 'strampalate' e lunghe
prodotte da linq2sql viaggiare più veloci rispetto a quelle più piccole
scritte da alcuni dba,... ben inteso non per colpa di nessuno)
- costo totale del layer di accesso ai dati (il tempo del developer per
scriverli, testarli e manutenerli)

--
Raffaele Rialdi
http://www.iamraf.net

Weblog:
http://blogs.ugidotnet.org/raffaele

Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele

UGIdotNET -
http://www.ugidotnet.org/


title: ADO.NET e LINQ

text:
Il 06/11/2011 21:20, Raffaele Rialdi [MVP] ha scritto:
> i predicate dinamici è difficile scriverli efficienti in linguaggio sql
> - in alcuni casi performance (ho visto query 'strampalate' e lunghe
> prodotte da linq2sql viaggiare più veloci rispetto a quelle più piccole
> scritte da alcuni dba,... ben inteso non per colpa di nessuno)

quindi posso saltare lo studio di
ADO.NET
 e andare direttamente verso Linq?

grazie


title: ADO.NET e LINQ

text:
GennarinOSpion wrote:
>
> quindi posso saltare lo studio di
ADO.NET
 e andare direttamente verso Linq?
>

Bella domanda.
Il giorno che avrai problemi nel diagnosticare uno "strano" messaggio
di entity framework, probabilmente rimpiangerai di non aver studiato
ado.net
 prima.
Allo stesso modo nessuno si puï¿œ esentare da "spiare" le query sql che
vengono prodotte da entity framework per capire se la query linq poteva
essere scritta in modo piï¿œ efficiente o se stai inutilmente massacrando
il db.

Detto questo, nella maggior parte dei casi
ado.net
 non ti servirï¿œ piï¿œ.



title: [x post] atagridview su wpf con list passata come Datasource.

author: max

text:
 Salve!
 non riesco a capire perchè un Datagridview non mi visualizza dei dati di
una
 list passati come Datasource..
 se cerco di popolare la grid facendo riferimento al datatable funziona
 ma passando la list mi restituisce il windowsformhost vuoto
 posto un pò di codice
 public partial class Window3 : Window
 {
    Connessione conn = new Connessione();
    BindingSource binding1 = new BindingSource();
    System.Windows.Forms.DataGridView grid = new DataGridView();
 public Window3()
 {
    InitializeComponent();
 }
 private void Button_Click(object sender, RoutedEventArgs e)
 {
    Pagamenti pag = new Pagamenti();
    Pagamento pagamento = new Pagamento();
    pagamento._Caus = 1;
    pagamento._DataPag = Convert.ToDateTime("31/12/2010");
    pagamento._Importo = 100;
 //creo 2 elementi per prova
    pag.pagamenti.Add(pagamento);
    pag.pagamenti.Add(pagamento);
    grid = this.FindName("gridView") as System.Windows.Forms.DataGridView;
  // riferimento al "nome" gridView presente nello xaml
                        /*               con questo funziona
                                            classe che gestisce le
connessioni a db e crea gli elementi funzionali
                                             conn.Apri_ConnessioneCompleta("select
* from fbpagam where idfatt = 45860", 1);
binding1.DataSource = conn.table;
                        */
    grid.AutoGenerateColumns = true;
    grid.DataSource = pag.pagamenti; //  se ci metto binding1 si connette
    grid.Refresh();
 }
 grazie


text:
max wrote:
>  Salve!
>
>  non riesco a capire perchè un Datagridview non mi visualizza dei dati di una
>  list passati come Datasource..
>
>  se cerco di popolare la grid facendo riferimento al datatable funziona
>  ma passando la list mi restituisce il windowsformhost vuoto
>  posto un pò di codice
>
Occhio e croce direi che il tuo datasource (la lista) non offre
abbastanza informazioni al controllo affinché possa autopopolare le
colonne.
BindingSource implementa molte più interfacce di una list<t> e quelle
fanno la differenza.
Se provi la mia
rafcollection.codeplex.com
 credo che dovrebbe
funzionare in quanto implementa una lunghissima lista di interfacce che
partecipano al binding.
In alternativa credo dovrai specificare a mano le colonne da mostrare
nella grid.
Tieni conto che anche le singole entity potrebbero necessitare di
implementare INotifyPropertyChanged per poter riflettere sulla grid le
modifiche che vengono fatte da codice. Non so se è il tuo caso ma se
vuoi questo comportamento dovrai implementare l'interfaccia in
questione.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: visualizzare il valore di una cella di un datagrid in wpf

author: Piero

text:
Buongiorno a tutti,
vorrei  stampare a video mediante il comando MessageBox.Show  il valore
presente all'interno di una cella selezionata in un datagrid ,ho  provato il
seguente codice ma non funziona.Praticamente prima clicco la cella del
datagrid( cittaDataGrid ) e poi clicco sul pulsante che f� partire l'evento
"valore_cell_datagrid.
Il codice errato � il seguente:
private void valore_cell_datagrid (object sender, RoutedEventArgs e)
        {
            string bbb = cittaDataGrid.SelectedValue.ToString();
            MessageBox.Show(bbb);
       }
Grazie per una eventuale risposta.


text:
"Piero" <
vigilant...@libero.it
> ha scritto nel messaggio
news:88NOp.43662$GZ3....@tornado.fastwebnet.it...
> Buongiorno a tutti,
>
> vorrei  stampare a video mediante il comando MessageBox.Show  il valore
> presente all'interno di una cella selezionata in un datagrid ,ho  provato
> il seguente codice ma non funziona.Praticamente prima clicco la cella del
> datagrid( cittaDataGrid ) e poi clicco sul pulsante che fà partire
> l'evento "valore_cell_datagrid.
>
> Il codice errato è il seguente:
>
> private void valore_cell_datagrid (object sender, RoutedEventArgs e)
>
>        {
>
>            string bbb = cittaDataGrid.SelectedValue.ToString();
>
>            MessageBox.Show(bbb);
>
>       }
>
> Grazie per una eventuale risposta.
>
Purtroppo ho capito che bisogna lavorare con la classe
DependencyProperties
è mi sembra che la cosa sia piuttosto complicatina....
Ci provero ancora e vi farò sapere.


text:
Buongiorno a tutti,
ho risolto il problema aggirando un p� la situazione e per conoscenza vi
riporto il codice esatto qualora dovesse servire a qualcuno.Il valore della
cella mi serviva solo per definire la funzione del comando UpdateQuery che
si ottiene mediante la procedura guidata.Al posto del valore della cella ho
inserito il valore che viene immesso in una casella di testo e il comando
funziona.Avrei preferito per la modifica di un record agire direttamente
sulla riga del Datagrid ........ma v� bene anche cos�.
private void update_btn_Click(object sender, RoutedEventArgs e)
{
Query_Wizard_WPF.Database1DataSet ds1 = new Database1DataSet();
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter ta1 = new
Database1DataSetTableAdapters.CittaTableAdapter();
ta1.UpdateQuery(textBox1.Text,cittaDataGrid.SelectedIndex+1);
ta1.Fill(ds1.Citta);
ShowDatabase();
}
private void ShowDatabase()
{
Query_Wizard_WPF.Database1DataSet database1DataSet =
((Query_Wizard_WPF.Database1DataSet)(this.FindResource("database1DataSet")));
// Carica i dati nella tabella Citta. Se necessario, � possibile modificare
questo codice.
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter
database1DataSetCittaTableAdapter = new
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter();
database1DataSetCittaTableAdapter.Fill(database1DataSet.Citta);
System.Windows.Data.CollectionViewSource cittaViewSource =
((System.Windows.Data.CollectionViewSource)(this.FindResource("cittaViewSource")));
cittaViewSource.View.MoveCurrentToFirst();
}


author: Mauro Servienti [MVP]

text:
Ciao Piero,
You wrote on 03/07/2011 :
> Buongiorno a tutti,
> ho risolto il problema aggirando un pï¿œ la situazione e per conoscenza vi
> riporto il codice esatto qualora dovesse servire a qualcuno.Il valore della
> cella mi serviva solo per definire la funzione del comando UpdateQuery che si
> ottiene mediante la procedura guidata.Al posto del valore della cella ho
> inserito il valore che viene immesso in una casella di testo e il comando
> funziona.Avrei preferito per la modifica di un record agire direttamente
> sulla riga del Datagrid ........ma vï¿œ bene anche cosï¿œ.
>
> private void update_btn_Click(object sender, RoutedEventArgs e)
>
> {
>
> Query_Wizard_WPF.Database1DataSet ds1 = new Database1DataSet();
>
> Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter ta1 = new
> Database1DataSetTableAdapters.CittaTableAdapter();
>
>
> ta1.UpdateQuery(textBox1.Text,cittaDataGrid.SelectedIndex+1);
>
> ta1.Fill(ds1.Citta);
>
> ShowDatabase();
>
> }
>
> private void ShowDatabase()
>
> {
>
> Query_Wizard_WPF.Database1DataSet database1DataSet =
> ((Query_Wizard_WPF.Database1DataSet)(this.FindResource("database1DataSet")));
>
> // Carica i dati nella tabella Citta. Se necessario, ï¿œ possibile modificare
> questo codice.
>
> Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter
> database1DataSetCittaTableAdapter = new
> Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter();
>
> database1DataSetCittaTableAdapter.Fill(database1DataSet.Citta);
>
> System.Windows.Data.CollectionViewSource cittaViewSource =
> ((System.Windows.Data.CollectionViewSource)(this.FindResource("cittaViewSource")));
>
> cittaViewSource.View.MoveCurrentToFirst();
>
> }
puoi speigare meglio cosa stai cercando di fare? perchï¿œ a naso non ha
nessun senso quello che c'ï¿œ scritto qui.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


text:
Hai ragione,ho corso un p� troppo.In pratica ho usato la connessione guidata
query wizard per programmare un veloce database di prova.Ho un componente
TextBox(textBox1) nella finestra MainForm + 3 pulsanti(Insert,Update e
Delete) e il datagrid(cittaDataGrid) .Quello che volevo ottenere in un primo
momento(.....che poi ho rinunciato)era poter inserire nei parametri del
comando UpdateQuery  il valore della cella del datagrid per poterla poi
modificare,cio� in pratica un utente modifica sul datagrid il valore della
cella e poi clicca il pulsante Update e il valore viene aggiornato.Purtroppo
non ci sono riuscito e ho dovuto rimediare inserendo nel comando UpdateQuery
il valore della propiet� Text del componente textBox1 ,cio� l'utente deve
selezionare la riga del datagrid e poi scrivere il valore nella casella di
testo(textBox1) e poi cliccare il pulsante UPDATE........era meglio se si
poteva agire direttamente sulla riga del datagrid senza dover inserire il
nuovo valore nella TextBox!! Ho notato un ulteriore altro problema.I comandi
insert,update e delete mi aggiornano il dataset ma non il database,sai come
� possibile permettere che aggiornino in tempo reale anche il database???
Ti allego il codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;
namespace Query_Wizard_WPF
{
/// <summary>
/// Logica di interazione per MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void insert_btn_Click(object sender, RoutedEventArgs e)
{
Query_Wizard_WPF.Database1DataSet ds = new Database1DataSet();
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter ta = new
Database1DataSetTableAdapters.CittaTableAdapter();
ta.InsertQuery(textBox1.Text);
ta.Fill(ds.Citta);
ShowDatabase();
}
private void ShowDatabase()
{
Query_Wizard_WPF.Database1DataSet database1DataSet =
((Query_Wizard_WPF.Database1DataSet)(this.FindResource("database1DataSet")));
// Carica i dati nella tabella Citta. Se necessario, � possibile modificare
questo codice.
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter
database1DataSetCittaTableAdapter = new
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter();
database1DataSetCittaTableAdapter.Fill(database1DataSet.Citta);
System.Windows.Data.CollectionViewSource cittaViewSource =
((System.Windows.Data.CollectionViewSource)(this.FindResource("cittaViewSource")));
cittaViewSource.View.MoveCurrentToFirst();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ShowDatabase();
}
private void delete_btn_Click(object sender, RoutedEventArgs e)
{
Query_Wizard_WPF.Database1DataSet ds0 = new Database1DataSet();
Query_Wizard_WPF.Database1DataSetTableAdapters.CittaTableAdapter ta0 = new
Database1DataSetTableAdapters.CittaTableAdapter();
ta0.DeleteQuery(cittaDataGrid.SelectedIndex+1);
ta0.Fill(ds0.Citta);
ShowDatabase();



text:
Ciao Piero,
You wrote on 03/07/2011 :
> Hai ragione,ho corso un pï¿œ troppo.In pratica ho usato la connessione guidata
> query wizard per programmare un veloce database di prova.Ho un componente
> TextBox(textBox1) nella finestra MainForm + 3 pulsanti(Insert,Update e
> Delete) e il datagrid(cittaDataGrid) .Quello che volevo ottenere in un primo
> momento(.....che poi ho rinunciato)era poter inserire nei parametri del
> comando UpdateQuery  il valore della cella del datagrid per poterla poi
> modificare,cioï¿œ in pratica un utente modifica sul datagrid il valore della
> cella e poi clicca il pulsante Update e il valore viene aggiornato.Purtroppo
> non ci sono riuscito e ho dovuto rimediare inserendo nel comando UpdateQuery
> il valore della propietï¿œ Text del componente textBox1 ,cioï¿œ l'utente deve
> selezionare la riga del datagrid e poi scrivere il valore nella casella di
> testo(textBox1) e poi cliccare il pulsante UPDATE........era meglio se si
> poteva agire direttamente sulla riga del datagrid senza dover inserire il
> nuovo valore nella TextBox!! Ho notato un ulteriore altro problema.I comandi
> insert,update e delete mi aggiornano il dataset ma non il database,sai come ï¿œ
> possibile permettere che aggiornino in tempo reale anche il database???
stai mischiando le carte in tavola, confondendo DataSet con db e con
chi sia responsabile di che cosa.
Lo scenario che hai delineato deve funzionare anche senza passare per
le textbox, e fidati che funziona un gran bene.
> Ti allego il codice
non sperare che io legga tutta quella spataffiata :-)



text:
> stai mischiando le carte in tavola, confondendo DataSet con db e con
> chi sia responsabile di che cosa.
>
> Lo scenario che hai delineato deve funzionare anche senza passare per le
> textbox, e fidati che funziona un gran bene.
>
>> Ti allego il codice
>
> non sperare che io legga tutta quella spataffiata :-)
>
> .m
>
> --
> Mauro Servienti
> {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
> Microsoft MVP - Visual C# / MCTS
>
http://mvp.support.microsoft.com/profile/mauro
> blog @
http://milestone.topics.it
> whynot [ at ] topics [ dot ] it
>
>
Volevo riuscire a creare velocemente un'applicazione di dati  in wpf con la
procedura guidata mediante query wizard perch� dovrebbe essere il modo pi�
rapido e pi� semplice,specialmente per quelli che come me sono ai primi
passi. Purtroppo in rete ho trovato solo degli esempi dove i dati che
vengono aggiornati sono solo sul dataset ma non sul database, tipo questo
esempio:
http://www.codeproject.com/KB/WPF/binding_in_linq-sql.aspx
 Per caso conosci  un link  dove � possibile scaricare un esempio di
applicazione con database in wpf con aggiornamento automatico anche del
database?
Grazie


text:
Ciao Piero,
You wrote on 05/07/2011 :
> Volevo riuscire a creare velocemente un'applicazione di dati  in wpf con la
> procedura guidata mediante query wizard perchï¿œ dovrebbe essere il modo piï¿œ
> rapido e piï¿œ semplice,specialmente per quelli che come me sono ai primi
> passi. Purtroppo in rete ho trovato solo degli esempi dove i dati che vengono
> aggiornati sono solo sul dataset ma non sul database, tipo questo esempio:
>
>
http://www.codeproject.com/KB/WPF/binding_in_linq-sql.aspx
>
>  Per caso conosci  un link  dove ï¿œ possibile scaricare un esempio di
> applicazione con database in wpf con aggiornamento automatico anche del
> database?
dmenticaper un secondo WPF e concetrati sulla prima parte:
http://it.bing.com/search?setmkt=it-IT&q=ado.net+tutorial
> Grazie



text:
"Mauro Servienti [MVP]" <maurose...@online.nospam> ha scritto nel
messaggio news:mn.3a327db79...@online.nospam...
> Ciao Piero,
>
> You wrote on 05/07/2011 :
>> Volevo riuscire a creare velocemente un'applicazione di dati  in wpf con
>> la procedura guidata mediante query wizard perch� dovrebbe essere il modo
>> pi� rapido e pi� semplice,specialmente per quelli che come me sono ai
>> primi passi. Purtroppo in rete ho trovato solo degli esempi dove i dati
>> che vengono aggiornati sono solo sul dataset ma non sul database, tipo
>> questo esempio:
>>
>>
http://www.codeproject.com/KB/WPF/binding_in_linq-sql.aspx
>>
>>  Per caso conosci  un link  dove � possibile scaricare un esempio di
>> applicazione con database in wpf con aggiornamento automatico anche del
>> database?
>
> dmenticaper un secondo WPF e concetrati sulla prima parte:
>
http://it.bing.com/search?setmkt=it-IT&q=ado.net+tutorial
>
>> Grazie
>
> .m
>
> --
> Mauro Servienti
> {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
> Microsoft MVP - Visual C# / MCTS
>
http://mvp.support.microsoft.com/profile/mauro
> blog @
http://milestone.topics.it
> whynot [ at ] topics [ dot ] it
>
Grazie Mauro
era proprio quello che cercavo,un link veramente molto utile con tanto
materiale a disposizione.
Ti ringrazio molto.
Piero


title: [VB express 2008] Scalemode di una PictureBox

text:
Salve
Un tempo (vecchio VB 6) le picture box avevano proprietà
floating point per lo scalemode "virtuale" della client
area, comodissimi per disegnare grafici con coordinate
arbitrarie, senza fare manualmente conversioni a integer
(pixel fisici).
Si può ancora fare ? Come ? Non ho trovato proprietà
analoghe, o non le ho capite.
grazie
Soviet


text:

Uhm ... prendo atto che non è più possibile lavorare in
coordinate relative definite dall'utente, ma solo in pixels :-(
ciao
soviet


title: Dll per effettuare FileBrowse

author: AM Informatica

text:
Esiste una dll per effettuare il file browse, cioè che permetta di
aprire le risorse del pc per poter effettuare la selezione di un file
e che restituisca il path (compreso del nome di file selezionato)
come
risultati della funzione ?
Ciao
Maurizio


title: Dll per effettuare FileBrowse

text:
Ciao AM Informatica,

OpenFileDialog?
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


title: Dll per effettuare FileBrowse

text:
> OpenFileDialog?
Non ho la possibilità di usare .NET
Io lavoro in un ambiente di sviluppo in cui posso fare solo una
dichiarazione ad un API 32bit di Windows, es.  ShellExecuteA
Cercavo appunto una normale API Windows da invocare
grazie
Maurizio


title: Dll per effettuare FileBrowse

text:
AM Informatica wrote:
> Non ho la possibilità di usare .NET
Scusa ma allora che ci stai a fare in it.comp.dotnet? :)
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Dll per effettuare FileBrowse

author: Mauro Gamberini

text:
Non ho la possibilità di usare .NET
Io lavoro in un ambiente di sviluppo in cui posso fare solo una
dichiarazione ad un API 32bit di Windows, es.  ShellExecuteA
Cercavo appunto una normale API Windows da invocare
******************************
it.comp.lang.visual-basic
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/


title: [WPF] Due view che insistono sullo stesso modello

text:
Ciao a tutti,
mi trovo in questa situazione. Ho un'istanza della classe Foo che viene
visualizzata *contemporaneamente* in due view di una applicazione
desktop costruita con WPF. Quindi la View1 ha come data context una
istanza del  ViewModel1 che "wrappa" l'istanza in questione. La View2 ha
una istanza di ViewModel2 che wrappa la stessa istanza di Foo. In questo
modo, se nella View1 viene modificata una qualche property di Foo, come
faccio a far propagare automaticamente il cambiamento a View2?
Ciao e grazie (e buon finesettimana),
Giulio
--


text:
Giulio Petrucci wrote :

Dipende da come bindi le proprietà di Foo, se questo implementa
INotifyPropertyChanged la notifica è automatica.


text:
Ciao Corrado,
On 4/1/2011 6:31 PM, Corrado Cavalli [MVP] wrote:
> Dipende da come bindi le proprietà di Foo, se questo implementa
> INotifyPropertyChanged la notifica è automatica.
Foo non implementa INotifyPropertyChanged, mentre i view model sì.
Grazie,
Giulio
--


text:
Ciao Giulio Petrucci,
You wrote on 01/04/2011 :
> La View2 ha una istanza di ViewModel2 che wrappa la stessa istanza di Foo. In
> questo modo, se nella View1 viene modificata una qualche property di Foo,
> come faccio a far propagare automaticamente il cambiamento a View2?
visto che non hai INotifyPropertyChanged -> MessageBroker
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


text:
Ciao Mauro,
On 4/1/2011 8:28 PM, Mauro Servienti [MVP] wrote:
> visto che non hai INotifyPropertyChanged -> MessageBroker
mi sa che mi tocca... :-/
Ciao,
Giulio
--


title: Estrarre mittente PEC

text:
Ciao,
ho un cliente che riceve email PEC.
Dovrebbe estrarre il mittente della vera mail (non quello della PEC).
Sapete se c'è già qualche semilavorato C# o VB (anche COM tanto devono
usarlo da Navision)
Thanks
Stè


title: Estrarre mittente PEC

text:
Ciao Be.St.,
You wrote on 02/08/2011 :
> Ciao,
>
> ho un cliente che riceve email PEC.
>
> Dovrebbe estrarre il mittente della vera mail (non quello della PEC).
> Sapete se c'ï¿œ giï¿œ qualche semilavorato C# o VB (anche COM tanto devono
> usarlo da Navision)
Non ho ben presente come funziona la PEC, ma Reply-To: <...> e
Return-Path: ... dovrebbero contenere quello che ti interessa, inoltre
dovresti avere sempre un allegato daticert.xml che contiene ulteriori
info.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


title: Estrarre mittente PEC

author: Gerolamo

text:
Be.St. wrote:
> Ciao,
>
> ho un cliente che riceve email PEC.
>
> Dovrebbe estrarre il mittente della vera mail (non quello della PEC).
In che senso?
Cosa intendi per "mittente della vera mail"?
--
Gerolamo


title: Query SQL dinamica

author: Maurizio S.

text:
Sto iniziando ad interrogare le basi di dati in Visual Studio.NET.

Solitamente clicko col destro sul TableAdapter (nella finestra di
progettazione del form) e creo la query tramite "Aggiungi query...".

Vorrei ora creare un form per effettuare la ricerca in una tabella, dove
l'utente può valorizzare dei campi qualsiasi (ad es. soltanto il
cognome, o soltanto il nome) e poi avviare la ricerca.

La query che ho creato è qualcosa del genere:

	SELECT * FROM t WHERE (cognome = @c) AND (nome = @n) AND ...

Ora, se viene valorizzato soltanto il campo nome sul form, sarà eseguita
una query del tipo:

	SELECT * FROM t WHERE (cognome = '') AND (nome = 'Maria') AND ...

E questo porterà a risultati errati.

Come faccio a fare in modo che la query eseguita sia questa:

	SELECT * FROM t WHERE (nome = @n) AND ...

?

In alternativa, come poter inserire le wildcards nella query?

Qualcosa come: WHERE (cognome = '%[@c]%')

In questo modo, se anche il parametro @c è vuoto, non influirà sulla
query.

Preferirei però la prima soluzione, dato che per una condizione inutile
come (cognome = '%%') magari il dbms si metterà a fare il confronto per
ogni singolo record comunque, con relativo spreco di tempo e risorse.

Devo per forza creare la query dinamicamente, da codice?

Saluti, m.


title: Query SQL dinamica

author: Thanatos

text:
On Sun, 04 Mar 2012 17:01:00 +0100, "Maurizio S." <
mau...@esse.it
>
wrote:

> Solitamente clicko col destro sul TableAdapter (nella finestra di
> progettazione del form) e creo la query tramite "Aggiungi query...".

Mmm... Casomai volessi aggiungere una query da codice, in fase di
run-time, è possibile farlo oppure devo procedere in altro modo?

Grazie, m.


title: Query SQL dinamica

text:
"Maurizio S." <
mau...@esse.it
> wrote in message
news:9d47l7luljjld0kkj...@4ax.com...

Non ci sono particolari problemi di performance (SQL Server fa anche lui le
sue ottimizzazioni), la differenza piu' significativa e' nel cambio di
semantica: da "equals" a "contains".  Personalmente risolvo il problema con
un po' di logica nell'SQL, in questo caso qualcosa del tipo:

    cognome = CASE WHEN LEN(@cognome) = 0 THEN cognome ELSE @cognome END

> Devo per forza creare la query dinamicamente, da codice?

Puoi usare stored procedures, e avendo cura di passare NULL quando il
parametro e' vuoto (convert empty string to null o simili) le condizioni si
semplificano a:

    cognome = ISNULL(@cognome, cognome)

Non posso essere molto piu' preciso di cosi' perche' praticamente non uso
WinForms, but you get the picture...

-LV


title: VB- controllo simile alla MSHFlexGrid VB6

author: vbMizio

text:
Ciao a tutti,
tempo fa postai una richiesta simile su un ng analogo, quindi qualcuno di
voi avra' gia' letto la richiesta, anche se, adesso, ho le idee un pochinino
piu' chiare.
In un mio programma scritto in VB6, utilizzavo una MSHFlexGrid che
visualizzava una sorta di calendario, dove ogni colonna rappresentava un
giorno, mentre ogni riga una certa ora.
Immaginatevi un planning per gli appuntamenti, tanto per capirci, dove viene
segnato solo se quella determinata ora, in quel determinato giorno, e'
occupato o meno (senza altre informazioni).
Il problema principale e' che questo planning potrebbe dover visualizzare un
bel po' di giorni, anche qualche anno (e quindi 365 * anni) colonne.
Sto provando ad usare, in un WinForm, la DataGrdiViewer, la quale ha un
piccolo problema...
Andando ad impostare manualmente il numero di colonne visualizzate, tramite
Me.dgvDates.ColumnCount = CL
Dove naturalmente dgvDates e' la mia griglia, e CL e' il numero delle
colonne che voglio visualizzare, le colonne cosi' create hanno tutte la
proprieta' FillWeight impostata a 100, come da default, e questo limita il
numero massimo di colonne visualizzabili a 655, dato che la somma totale dei
valori dei FillWeight non puo' superare 65535.
Una soluzione possibile sarebbe quella di aggiungere con un ciclo ogni
singola colonna, dopo aver impostato la proprieta' FillWeight della colonna
stessa a valori minori di 100, cosi' da poter visualizzare piu' colonne, ma
ho paura (non ho ancora provato, ma lo faro') che questo modo di lavorare
rallenti un po' le cose.
Il motivo per cui ancora non ho provato, e sto rompendo le scatole a voi in
questa giornata di Agosto e', principalmente perche' sto aspettando ancora
le ferie, che arriveranno solo a partire dal prossimo WE, anche se
ufficialmente devo dire che sto cercando anche qualche controllo alternativo
(anche Wpf da hostare sulla form) che possa fare lo stesso lavoro, tenendo
conto che:
Le prime due righe dovrebbero  essere poste in merge, cioe' la prima riga,
che rappresenta l'anno, dovrebbe non avere ogni cella che riporta , ad
esempio, 2011, ma dovrebbe avere una unica cella, grande quanto tutte le
colonne interessate, che riporta un unico valore 2011; la stessa cosa
dovrebbe fare la seconda riga, per il mese. Ho trovato qualche post che
indica come farlo con la DataGridViewer, anche se non e' proprio
semplicissimo.
Il numero delle colonne *dovrebbe* poter essere (virtualmente) infinito,
anche se un limite intorno al migliaio di colonne e' piu' che accettabile.
Sto utilizzando VS2008, quindi FW 3.5 sp1.
Potrei anche migrare verso 2010 e FW 4, ma se posso evitarlo, per il
momento, e' meglio :-)


author: Paolo opg

text:
"vbMizio" <
vbm...@io.it
> wrote in
news:4e54d0a7$0$15663$
4faf...@reader2.news.tin.it
:
> Ciao a tutti,
> tempo fa postai una richiesta simile su un ng analogo, quindi qualcuno
> di voi avra' gia' letto la richiesta, anche se, adesso, ho le idee un
> pochinino piu' chiare.
> In un mio programma scritto in VB6, utilizzavo una MSHFlexGrid che
> visualizzava una sorta di calendario, dove ogni colonna rappresentava
> un giorno, mentre ogni riga una certa ora.
> Immaginatevi un planning per gli appuntamenti, tanto per capirci, dove
> viene segnato solo se quella determinata ora, in quel determinato
> giorno, e' occupato o meno (senza altre informazioni).
> Il problema principale e' che questo planning potrebbe dover
> visualizzare un bel po' di giorni, anche qualche anno (e quindi 365 *
> anni) colonne. Sto provando ad usare, in un WinForm, la
> DataGrdiViewer, la quale ha un piccolo problema...
non esistono monitor in grado di visualizzare centinaia di colonne.
se va bene, a video riesci ad averne al massimo alcune decine
*leggibili*; per le altre devi necessariamente scrollare.
a questo punto perche' non bindare le colonne solo quando servono?
decidi la dimensione dell'area di lavoro (chesso', 30/40 colonne) e poi
metti dei pulsanti o una barra per consentire lo scrolling all'utente.
barra e pulsanti non fanno altro che bindare i dati corretti alle colonne
visibili.
[cut]
--
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--


text:
Ciao Paolo, grazie della risposta
...
>non esistono monitor in grado di visualizzare centinaia di colonne.
se va bene, a video riesci ad averne al massimo alcune decine
*leggibili*; per le altre devi necessariamente scrollare.
a questo punto perche' non bindare le colonne solo quando servono?
...
Ho notato, in altre prova fatte prima, che a volte il caricare "al volo" i
dati da visualizzare, puo' far rallentare la visualizzazione dei dati
stessi, specie in scrolling molto veloci.
Attualmente ho risolto il primo quesito, sempre utilizzando la DataGridView,
andando ad aggiungere dinamicamente le colonne necessarie ed impstando la
proprieta' FillWeight ad un valore "buono".
In questo modo sono riuscito ad aggiungere anche il numero di giorni
equivalenti ad 8 anni (una esagerazione, ma per prova...), ottenendo ottimi
risultati anche dal punto di vista dello scrolling.
Certo, al caricamento ci ha messo circa 8 secondi, ma e' moooolto piu' che
accettabile.
Ora pero' mi resta il problema del merge delle celle con i nomi dei mesi e
il numero degli anni.
Resto in attesa di indicazioni :-)


text:
Ciao vbMizio,
You wrote on 24/08/2011 :
> Ciao Paolo, grazie della risposta
> ...
>> non esistono monitor in grado di visualizzare centinaia di colonne.
> se va bene, a video riesci ad averne al massimo alcune decine
> *leggibili*; per le altre devi necessariamente scrollare.
> a questo punto perche' non bindare le colonne solo quando servono?
> ...
> Ho notato, in altre prova fatte prima, che a volte il caricare "al volo" i
> dati da visualizzare, puo' far rallentare la visualizzazione dei dati stessi,
> specie in scrolling molto veloci.
condivido quello che dice Paolo, devi virtualizzare le colonne,
altrimenti non ne esci più, rischi sempre di raggiungere limiti e/o
avere problemi che sono insormontabili.
Il priblema di fondo è che con Windows Forms non c'è mezzo di
virtualizzare le colonne mentre le puoi fare con WPF, in realtà no...ma
ci puoi arrivare virtualizzando le righe e cambiando l'HostPanel per
usare le righe come se fossero colonne.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


text:
>condivido quello che dice Paolo, devi virtualizzare le colonne,
altrimenti non ne esci più, rischi sempre di raggiungere limiti e/o
avere problemi che sono insormontabili.
....
Ma come, adesso che ho risolto? :-)
Non virtualizzando, ma operando come descritto in precedenza (cambiando
cioe' il FillWeight di ciascuna colonna al momento della creazione della
stessa), ho ottenuto ottimi risultati in termini di tempo di disegno della
griglia, e una velocita' di scrolling perfetta per quello che mi serve.
I limiti sicuramente ci sono, ma porre un limite di tempo visualizzabile ad
esempio a 3 anni, non e' affatto un problema per quello che sto facendo.
Quali vantaggi otterrei? Forse un consumo di memoria minore, ma a questi
livelli non e' un problema.
Ad occhio, pero', virtualizzare il tutto dovrebbe portare qualche ritardo di
ridisegno della griglia durante lo scrolling. O sbaglio?
Per quel che riguarda il merge delle celle, sto facendo delle prove diverse,
cioe' sto cercando di eliminare le righe che indicano anni e mesi, e mettere
due label per i mesi e due per gli anni ( proprio poco piu' in alto  della
griglia e andare a scrivere li dentro i mesi e gli anni, dato che non posso
avere piu' di due mesi (e quindi due anni) visualizzati contemporaneamente a
monitor


text:
Ciao vbMizio,
You wrote on 25/08/2011 :
> Ma come, adesso che ho risolto? :-)
:-)
> Ad occhio, pero', virtualizzare il tutto dovrebbe portare qualche ritardo di
> ridisegno della griglia durante lo scrolling. O sbaglio?
dipende come lo fai, ad esempio Outlook virtualizza la listbox che
contiene i messaggi e lo fa divinamente, nella mia inbox ci sono più di
39.000 email e scrolla come se nulla fosse. Non ho mica che sia facile,
anzi :-)



title: Serializzare/Deserializare una classe su db

author: Rino

text:
Salve a tutti,
sto cercando di fare una cosa e sono ad un passo dalla soluzione ma
non riesco ad uscirne, l'idea è questa:
ho un console che:
- crea una classe Pippo, a runtime (!!!) in un assembly temporaneo e
in un modulo temporaneo
- setta anche le proprietà di Pippo con dei valori, sempre a runtime
- serializza la classe Pippo
- salva il tutto in una tabella, in un campo varbinary(max) in
sqlserver.
Fin qui tutto bene... sta come un picchio.
Il problema è questo: ho un altro console che dovrebbe fare il lavoro
inverso, ma quando vado a deserializzazre il campo della tabella, mi
restituisce un errore tipo: "Impossibile caricare il tipo Pippo
richiesto per la deserializzazione"
L'istruzione è:  object newPippo = (Pippo)
binaryFormatter.Deserialize(new System.IO.MemoryStream((byte[])
row["FieldPippo"]));
La cosa che mi stupisce è che lui riesce comunque ad estrarre "Pippo"
dal MemoryStream... ossia qualcosa riesce a "interpretare"...  infatti
me lo ritrovo nell'eccezione; quindi immagino che si possa ricreare
l'intera istanza di Pippo.
Qualche suggerimento?
Tnx 1000


text:
Ciao Rino,
You wrote on 27/05/2011 :
> L'istruzione è:  object newPippo = (Pippo)
> binaryFormatter.Deserialize(new System.IO.MemoryStream((byte[])
> row["FieldPippo"]));
>
> La cosa che mi stupisce è che lui riesce comunque ad estrarre "Pippo"
> dal MemoryStream... ossia qualcosa riesce a "interpretare"...  infatti
> me lo ritrovo nell'eccezione; quindi immagino che si possa ricreare
> l'intera istanza di Pippo.
>
> Qualche suggerimento?
a naso direi che è un problema di "assembly identity", siccome generi
l'assembly dinamicamente a runtime il Pippo del primo assembly non è lo
stesso Pippo del secondo assembly.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


text:
Ciao,
ok, ma come faccio a generare lo stesso assembly prima del
Deserialize ?
Ossia, io prima del Serialize, creo un assembly e un modulo fittizi e
poi "aggancio" Pippo all'assembly greato.
Ma nell'operazione inversa io potrei tranquillamente creare assembly e
modulo fittizi, ma poi come gli aggancio Pippo se Pippo non è stato
prima deserializzato?
Tnx 1000


text:
Nessun suggeriemento?
Se occorre posso postare un po di codice.


text:
Ciao Rino,

appunto, direi che non puoi, quindi devi in qualche modo salvarti anche
l'assembly generato a runtime prima.
> Tnx 1000



title: Errore che non capisco

author: neroMalpelo

text:
Salve
studiando un listato di un esercizio mi sono trovato con un errore per
il quale non ne vengo accapo: mi dice che alla riga 45
"L'argomento 'column' non può essere null.Nome parametro: column"
Si tratta di una finestra con 2 form : uno che mostra i dati della
tabella Ordini e l'altro della tabella dettagli ordini del db Northwind.

ecco il codice completo

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SimpleDataEntryForm {
     public partial class Form1 : Form {
         public string connString;
         public string query1;
         public string query2;
         public OleDbDataAdapter orders_dAdapter;
         public OleDbDataAdapter order_details_dAdapter;
         public DataSet NW_Orders;
         public OleDbCommandBuilder cBuilder;
         public OleDbCommandBuilder cBuilder1;
         public BindingSource orders_bndSource;
         public BindingSource order_details_bndSource;
         public Boolean saveprompt;

         public Form1() {
             InitializeComponent();
             saveprompt = false;
             connString = "Provider=Microsoft.Jet.OleDb.4.0;Data
Source=C:\\studio C#\\FormInserimentoDati\\nordWindo.mdb";
             NW_Orders = new DataSet();
             query1 = "SELECT * FROM Orders";
             query2 = "Select * from [Order Details]";
             orders_dAdapter = new OleDbDataAdapter(query1, connString);
             order_details_dAdapter = new OleDbDataAdapter(query2,
connString);

             cBuilder = new OleDbCommandBuilder(orders_dAdapter);
             cBuilder.QuotePrefix = "[";
             cBuilder.QuoteSuffix = "]";
             cBuilder1 = new OleDbCommandBuilder(order_details_dAdapter);
             cBuilder1.QuotePrefix = "[";
             cBuilder1.QuoteSuffix = "]";

             orders_dAdapter.Fill(NW_Orders, "Orders");
             order_details_dAdapter.Fill(NW_Orders, "Order Details");

             DataColumn parentcolumn =
NW_Orders.Tables["Orders"].Columns["Order ID"];
             DataColumn childcolumn = NW_Orders.Tables["Order
Details"].Columns["Order ID"];
             DataRelation relation = new
System.Data.DataRelation("OrderstoDetails", parentcolumn, childcolumn);
             NW_Orders.Relations.Add(relation);

             orders_bndSource = new BindingSource();
             orders_bndSource.DataSource = NW_Orders.Tables["Orders"];
             order_details_bndSource = new BindingSource();
             order_details_bndSource.DataSource = orders_bndSource;
             order_details_bndSource.DataMember = "OrderstoDetails";

             order_details_bndSource.CurrentItemChanged += new
EventHandler(order_details_bndSource_CurrentItemChanged);
             order_details_bndSource.ListChanged += new
ListChangedEventHandler(order_details_bndSource_ListChanged);

             this.textBox1.DataBindings.Add(new Binding("Text",
orders_bndSource, "Order ID", true));
             this.dateTimePicker1.DataBindings.Add(new Binding("Text",
orders_bndSource, "Order Date", true));
             this.dateTimePicker2.DataBindings.Add(new Binding("Text",
orders_bndSource, "Shipped Date", true));
             this.textBox2.DataBindings.Add(new Binding("Text",
order_details_bndSource, "ID"));
             this.textBox3.DataBindings.Add(new Binding("Text",
order_details_bndSource, "Order ID"));
             this.textBox4.DataBindings.Add(new Binding("Text",
order_details_bndSource, "Quantity"));
             this.textBox5.DataBindings.Add(new Binding("Text",
order_details_bndSource, "Unit Price"));
             this.textBox6.DataBindings.Add(new Binding("Text",
order_details_bndSource, "Discount"));
             this.textBox7.Text = "" + (order_details_bndSource.Position
+ 1);
             this.textBox8.Text = order_details_bndSource.Count.ToString();

             foreach (Control tx in this.Controls) {
                 if (tx.DataBindings.Count > 0 && tx.Name != "textBox1"
&& tx.Name != "textBox3") {
                     tx.Enter += new EventHandler(tx_Enter);
                 }
             }

         }

         void tx_Enter(object sender, EventArgs e) {
             saveprompt = true;
         }

         void order_details_bndSource_ListChanged(object sender,
ListChangedEventArgs e) {
             saveprompt = true;
         }

         private void NextParent_Click(object sender, EventArgs e) {
             if (saveprompt) {
                 DialogResult x = MessageBox.Show("Do you want to save
the data first?", "Important", MessageBoxButtons.YesNo);
                 if (x == DialogResult.Yes) {
                     try {

                         orders_bndSource.EndEdit();
                         order_details_bndSource.EndEdit();
                         orders_dAdapter.Update(NW_Orders, "Orders");
                         order_details_dAdapter.Update(NW_Orders, "Order
Details");

                         MessageBox.Show("Record Updated");
                     }
                     catch (OleDbException f) {
                         MessageBox.Show("Record Update Failed - Error
Code " + f.ErrorCode.ToString());
                     }
                 }
             }
             orders_bndSource.MoveNext();
             this.textBox7.Text = "" + (order_details_bndSource.Position
+ 1);
             this.textBox8.Text = order_details_bndSource.Count.ToString();
             saveprompt = false;
         }

         private void order_details_bndSource_CurrentItemChanged(object
sender, EventArgs e) {
             saveprompt = true;
         }

         private void NextChild_Click(object sender, EventArgs e) {
             if (saveprompt) {
                 DialogResult x = MessageBox.Show("Do you want to save
the data first?", "Important", MessageBoxButtons.YesNo);
                 if (x == DialogResult.Yes) {
                     try {

                         orders_bndSource.EndEdit();
                         order_details_bndSource.EndEdit();
                         orders_dAdapter.Update(NW_Orders, "Orders");
                         order_details_dAdapter.Update(NW_Orders, "Order
Details");

                         MessageBox.Show("Record Updated");
                     }
                     catch (OleDbException f) {
                         MessageBox.Show("Record Update Failed - Error
Code " + f.ErrorCode.ToString());
                     }
                 }
             }
             order_details_bndSource.MoveNext();
             this.textBox7.Text = "" + (order_details_bndSource.Position
+ 1);
             saveprompt = false;

         }

         private void AddNew_Click(object sender, EventArgs e) {
             order_details_bndSource.AddNew();

         }

         private void SaveChanges_Click(object sender, EventArgs e) {
             try {

                 orders_bndSource.EndEdit();
                 order_details_bndSource.EndEdit();
                 orders_dAdapter.Update(NW_Orders, "Orders");
                 order_details_dAdapter.Update(NW_Orders, "Order Details");
                 saveprompt = false;
                 MessageBox.Show("Record Updated");
             }
             catch (OleDbException f) {
                 MessageBox.Show("Record Update Failed - Error Code " +
f.ErrorCode.ToString());
             }

         }

     }
}


title: Errore che non capisco

author: Kan

text:
Il 08/07/2012 15.39, neroMalpelo ha scritto:
> Salve
> studiando un listato di un esercizio mi sono trovato con un errore per
> il quale non ne vengo accapo: mi dice che alla riga 45
> "L'argomento 'column' non può essere null.Nome parametro: column"
> Si tratta di una finestra con 2 form : uno che mostra i dati della
> tabella Ordini e l'altro della tabella dettagli ordini del db Northwind.
>
> ecco il codice completo
>

Il codice non è completo, manca il contenuto del file Form1.Designer.cs.


title: Moltiplicazione tra matrici

author: Pidi

text:
Un saluto.
Sto programmando in c# .NET. Devo moltiplicare tra di loro due matrici,
dichiarate come array bidimensionale:
double[,] A = new double[4,4];
double[,] B = new double[4,4];
Esiste un modo per calcolare direttamente il prodotto matriciale C=A*B?
Oppure devo implementare a mano una funzione che esegui il prodotto
righe per colonne?
Altrimenti se esiste ma per classi particolari sono disponibile a
dichiarare le due matrici sopra con un diverso tipo di dato.


title: Moltiplicazione tra matrici

author: Carnefrisca

text:
Il 22/06/2011 18.06, Pidi ha scritto:
>
> Esiste un modo per calcolare direttamente il prodotto matriciale C=A*B?
> Oppure devo implementare a mano una funzione che esegui il prodotto
> righe per colonne?
Non esiste.
Dovrai svilupparlo da te.
--
http://carnefrisca.blogspot.com
http://frischfleisch.deviantart.com


title: Moltiplicazione tra matrici

author: Raffaele Rialdi [MVP]

text:

per le matrici 3x3 c'ï¿œ la classe Matrix di GDI+:
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx
Per quelle 4x4 puoi usare la struct Matrix di WPF:
http://msdn.microsoft.com/en-us/library/system.windows.media.matrix.aspx
Sono pensate specificamente per l'elaborazione grafica ma le operazioni
ovviamente sono le stesse, quindi sei servito.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Moltiplicazione tra matrici

author: GM

text:
Il 23/06/2011 13.09, Raffaele Rialdi [MVP] ha scritto:
...
>
> per le matrici 3x3 c'ï¿œ la classe Matrix di GDI+:
>
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx
>
>
> Per quelle 4x4 puoi usare la struct Matrix di WPF:
>
http://msdn.microsoft.com/en-us/library/system.windows.media.matrix.aspx
>
> Sono pensate specificamente per l'elaborazione grafica ma le operazioni
> ovviamente sono le stesse, quindi sei servito.
>
Ecco, adesso vado OT ma ne approfitto per sentire altri pareri...
Prendiamo ad esempio l'interfaccia della Matrix di WPF:
vedo property tipo Determinant e HasInvese
Ecco la mia domanda: secondo me mettere roba di questo tipo (che
richiede calcoli e quindi tempo) dietro una property puï¿œ generare
confusione.
Provo a spiegarmi:
tralasciamo per un attimo il fatto che nel caso in questione (matrici
3x3) il calcolo in questione sia quasi banale e molto veloce e
concentriamoci sul concetto.
Sappiamo tutti che le property altro non sono che "zucchero sintattico"
ma vedendo quelle property, io come utilizzatore sono portato a pensare
che internamente sia presente per lo meno un qualche meccanismo di
caching per evitare che il valore venga ricalcolato tutte le volte.
E invece, sbircio con ILSpy e... scopro che il valore viene ricalcolato.
Per poi non parlare dell'implementazione di IsInvertible nella
System.Drawing.Drawing2D.Matrix:
// System.Drawing.Drawing2D.Matrix
public bool IsInvertible
{
	get
	{
		int num2;
		int num = SafeNativeMethods.Gdip.GdipIsMatrixInvertible(new
HandleRef(this, this.nativeMatrix), out num2);
		if (num != 0)
		{
			throw SafeNativeMethods.Gdip.StatusException(num);
		}
		return num2 != 0;
	}
}
E allora chiedo: non era meglio dichiararle come metodo anzichï¿œ come
property???? Oppure documentare il fatto che sotto il cofano non
ritornano semplicemente un valore ma eseguono calcoli?


title: Moltiplicazione tra matrici

text:
GM wrote:
> E allora chiedo: non era meglio dichiararle come metodo anzichï¿œ come
> property???? Oppure documentare il fatto che sotto il cofano non ritornano
> semplicemente un valore ma eseguono calcoli?
Concordo con la tua analisi, ma se ci atteniamo alla richiesta di Pidi,
puï¿œ fare affidamento su una "buona" implementazione senza reinventare
l'acqua calda.
Ma ti do assolutamente ragione sul fatto che le proprietï¿œ dovrebbero
essere 'light'.
Aggiungo anche che il pattern MVVM peggiora di molto la situazione.
Proprio perchï¿œ MVVM si basa sul concetto di proprietï¿œ modificata, sui
setter delle proprietï¿œ sono agganciate i metodi di "propertychanged"
dietro cui si nasconde spesso un notevole lavoro.
Personalmente avrei preferito un meccanismo che permettesse di
schedulare (presso il dispatcher) l'esecuzione di un metodo anzichï¿œ
l'esecuzione sincrona.
Nonostante tutto MVVM ï¿œ un 'must' non solo in WPF ma (a mio avviso)
anche in MVC (che chiamerei MVVMC).
Extra-OT :)
Mi ï¿œ capitato di debuggare codice di altri in cui i getter cambiano lo
stato dell'oggetto! Questo provoca comportamenti assurdi sotto debugger
perchï¿œ nella finestra dei watch c'era una proprietï¿œ il cui getter
veniva giustamente chiamato da visual studio per aggiornare la view del
debugger e continuava a cambiare lo stato dell'oggetto.



title: Moltiplicazione tra matrici

text:
Il 23/06/2011 18.54, Raffaele Rialdi [MVP] ha scritto:
...
> Extra-OT :)
> Mi ï¿œ capitato di debuggare codice di altri in cui i getter cambiano lo
> stato dell'oggetto!
...
Extra-Extra-OT :):)
...certo che se in .NET esistesse const ....


title: Moltiplicazione tra matrici

author: LudovicoVan

text:
"GM" <
G...@no.spam.it
> wrote in message
news:4e042ee4$0$15672$4faf...@reader2.news.tin.it...

Si potrebbero fare porcherie ancora piu' sofisticate... :)
-LV

--- Posted via news://
freenews.netfront.net/
 - Complaints to
ne...@netfront.net
 ---


title: Moltiplicazione tra matrici

text:
GM wrote:
> Extra-Extra-OT :):)
> ...certo che se in .NET esistesse const ....
Non sai quante volte mi ï¿œ mancato :)
Che se poi guardi l'introduzione di "in" e "out" usato per la
covarianza e la controvarianza di C# 4.0, ï¿œ usato ben per quello ...



title: Moltiplicazione tra matrici

text:
Il 23/06/2011 13:09, Raffaele Rialdi [MVP] ha scritto:
> Pidi wrote:
>> Un saluto.
>> Sto programmando in c# .NET. Devo moltiplicare tra di loro due
>> matrici, dichiarate come array bidimensionale:
>> double[,] A = new double[4,4];
>> double[,] B = new double[4,4];
>>
>> Esiste un modo per calcolare direttamente il prodotto matriciale
>> C=A*B? Oppure devo implementare a mano una funzione che esegui il
>> prodotto righe per colonne?
>>
>> Altrimenti se esiste ma per classi particolari sono disponibile a
>> dichiarare le due matrici sopra con un diverso tipo di dato.
>
> per le matrici 3x3 c'ï¿œ la classe Matrix di GDI+:
>
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx
>
>
> Per quelle 4x4 puoi usare la struct Matrix di WPF:
>
http://msdn.microsoft.com/en-us/library/system.windows.media.matrix.aspx
Ho delle matrici 4x4, ma sto usando Windows Forms e non WPF. Quindi ho
optato per la creazione di una funzione self maid.
Grazie


title: Moltiplicazione tra matrici

author: Andrea Saltarello

text:
Il 23/06/2011 18:54, Raffaele Rialdi [MVP] ha scritto:
> Nonostante tutto MVVM ï¿œ un 'must' non solo in WPF ma (a mio avviso)
> anche in MVC (che chiamerei MVVMC).
ti dirï¿œ: visto che tanto quello che si usa attualmente *non* ï¿œ MVC
(anche se tuti lo chiamano cosï¿œ) bensï¿œ "Model 2", io ormai faccio cosï¿œ:
- Definisco il ViewModel specifico di una view
- implemento uno o piï¿œ servizi che, consumati dalla action del
controller, fanno I/O (ergo, da gateway) del viewmodel tra il controller
stesso e la logica applicativa. In "lingua DDD" questi servizi sarebbero
l'application layer, ma io li chiamo "worker services" per rimanere
agnostico rispetto a metodologie/pratiche specifiche
- chiamo tutto tutto ciï¿œ "Model 3", ad indicare sia la "provenienza",
sia la "revisione" :-)
--
.A
GUISA -
http://www.guisa.org
UGIdotNET -
http://www.ugidotnet.org
Read my blog at:
http://blogs.ugidotnet.org/pape


title: Moltiplicazione tra matrici

text:
Andrea Saltarello wrote:
> Il 23/06/2011 18:54, Raffaele Rialdi [MVP] ha scritto:
>
>> Nonostante tutto MVVM è un 'must' non solo in WPF ma (a mio avviso)
>> anche in MVC (che chiamerei MVVMC).
>
> ti dirò: visto che tanto quello che si usa attualmente *non* è MVC (anche se
> tuti lo chiamano così) bensì "Model 2", io ormai faccio così:
> - Definisco il ViewModel specifico di una view
> - implemento uno o più servizi che, consumati dalla action del controller,
> fanno I/O (ergo, da gateway) del viewmodel tra il controller stesso e la
> logica applicativa. In "lingua DDD" questi servizi sarebbero l'application
> layer, ma io li chiamo "worker services" per rimanere agnostico rispetto a
> metodologie/pratiche specifiche
> - chiamo tutto tutto ciò "Model 3", ad indicare sia la "provenienza", sia la
> "revisione" :-)
Da "meccanico" del software non posso che sposare totalmente questo
approccio visto che è l'unica soluzione che mi ha dato soddisfazione in
asp.net
 mvc... e lascio a te architetto il corretto 'labeling' :)



title: Sottrazione di due short

author: ferradini

text:
Ho il seguente codice:
  public List<short> BuildDelta(List<short> lsRitardi)
       {
           var lsDelta = new List<short>();
           lsDelta.Add(lsRitardi[0]);
           short n1 = lsRitardi[idx];
           short n2 = lsRitardi[idx-(short)1];
           short n = n1 - n2;
           lsDelta.Add(n);

Mi ritorna il seguente errore

Errore	1	Impossibile convertire in modo implicito il tipo 'int' in
'short'. È presente una conversione esplicita. Probabile cast mancante.
D:\Visual Studio 2010\Projects\

L'errore è dato alla riga short n = n1 - n2;
cioè quando eseguo la sottrazione dei due short.
Sembra che ciò non sia possibile.

Non ne capisco il motivo.....  Grazie a chi vorrà delucidarmi.  Ferradini


title: Sottrazione di due short

text:

Perché l'operazione di sottrazione di due short può dare luogo ad un
integer. In pratica potrebbe "non starci" dentro un altro short.

Se vuoi assumere che certamente il risultato sarà uno short, puoi fare
il cast altrimenti il risultato dovrebbe essere considerato un int.

--
Raffaele Rialdi
http://www.iamraf.net

Weblog:
http://blogs.ugidotnet.org/raffaele

Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele

UGIdotNET -
http://www.ugidotnet.org/


title: Sottrazione di due short

text:
Raffaele Rialdi [MVP] wrote:
> ferradini wrote:
>> Non ne capisco il motivo.....  Grazie a chi vorrà delucidarmi.  Ferradini
>>
>
> Perché l'operazione di sottrazione di due short può dare luogo ad un integer.
> In pratica potrebbe "non starci" dentro un altro short.
>
> Se vuoi assumere che certamente il risultato sarà uno short, puoi fare il
> cast altrimenti il risultato dovrebbe essere considerato un int.
>

Per tua info, questo è quanto dice il reference di C#:

7.3.6.1 Unary numeric promotions
Unary numeric promotion occurs for the operands of the predefined +, –,
and ~ unary operators. Unary numeric promotion simply consists of
converting operands of type sbyte, byte, short, ushort, or char to type
int. Additionally, for the unary – operator, unary numeric promotion
converts operands of type uint to type long.

Il reference lo trovi nella cartella:
C:\Program Files (x86)\Microsoft Visual Studio
11.0\VC#\Specifications\1033



title: Sottrazione di due short

text:
"Raffaele Rialdi [MVP]"  wrote in message
news:mn.c20d7dc45...@n0spamvevy.com...
> ferradini wrote:
> > Ho il seguente codice:
<snip>
> Perché l'operazione di sottrazione di due short può dare luogo ad un
> integer.

Una precisazione: come da documentazione che poi hai peraltro menzionato, la
conversione avviene sempre.

Colgo inoltre di nuovo l'occasione per segnalare che la matematica con Int32
e' decisamente la piu' performante (per cui motivi i cui dettagli ho gia'
menzionato in un altro thread), ed e' solo per questioni di spazio di
storage (e solo li' dove lo storage viene gestito) che i valori potrebbe
avere senso che siano di tipo short (o byte, sbyte, ecc.).

HTH,

-LV


title: Sottrazione di due short

text:
LudovicoVan wrote:
>
> Una precisazione: come da documentazione che poi hai peraltro menzionato, la
> conversione avviene sempre.
>

Quello che intendevo è che la sottrazione può effettivamente creare un
numero che non sta dentro lo short. Questo a prescindere dallo standard
che può decidere le conversioni anche per motivi di performance (che
sottoscrivo)



title: Sottrazione di due short

text:
LudovicoVan wrote:
>
> Una precisazione: come da documentazione che poi hai peraltro menzionato,
> la conversione avviene sempre.
>

Quello che intendevo è che la sottrazione può effettivamente creare un
numero che non sta dentro lo short. Questo a prescindere dallo standard
che può decidere le conversioni anche per motivi di performance (che
sottoscrivo)




title: filesystem

author: MasterControl

text:
Ciao
vorrei provare a buttare giù un programma che tramite window form,
visualizzi il contenuto di una cartella condivisa in rete lan.
quindi che si colleghi a
\\indirizzoPC\cartellaCondivisa
in tal caso quali a quali classi del net framework mi devo affidare?
grazie


title: [MSSQL] Drop di un database

text:
Devo cancellare di forza un database, ma mi viene impedito perchï¿œ il
database in questione ï¿œ in uso.
Come fare?


title: [MSSQL] Drop di un database

author: ReadOnly

text:

Ipotizzando che le connessioni siano effettuate da utenti non owner
potresti connetterti al master e da li lanciare un
ALTER DATABASE <nomedb> SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
che dovrebbe droppare all'istante tutte le connessioni e accettare da li
in avanti solo connessioni da utenti con ruolo db_owner, poi droppi con
comodo il db.
Un altro paio di metodi sono descritti qui:
http://www.julian-kuiters.id.au/article.php/sql-server-2005-snippet-drop-db-conn
in pratica tiri il db offline e poi lo riaccendi, oppure ammazzi tutti i
processi di sql che lo stanno usando.
--
r--r--r--


title: [MSSQL] Drop di un database

author: gianluca gravina

text:

Se non ricordo male, da Sql Server Management Studio, se fai la drop del
DB c'ï¿œ una checkbox che dovrebbe essere qualcosa tipo "Force closing
existing connection".
HTH
Gianluca


title: [MSSQL] Drop di un database

text:
Il 25/10/2010 11:05, gianluca gravina ha scritto:
> Se non ricordo male, da Sql Server Management Studio, se fai la drop del
> DB c'ï¿œ una checkbox che dovrebbe essere qualcosa tipo "Force closing
> existing connection".
avevo dimenticato di dire che il database deve essere eliminato da
programma, non importa che sia collegato deve essere solo possibile
eseguire la query DROP DATABASE <nome database>


title: [MSSQL] Drop di un database

author: Luca Menegotto

text:
ferradini wrote:
> avevo dimenticato di dire che il database deve essere eliminato da
> programma, non importa che sia collegato deve essere solo possibile
> eseguire la query DROP DATABASE <nome database>
Se usi SQL Server versione da 2005 in avanti, per qualsiasi operazione
tu faccia c'e' il meraviglioso tastino 'Script' che ti consente di
vedere effettivamente cosa viene fatto dietro le quinte. Te lo
suggerisco perche' per molte operazioni e' molto, molto didattico.
--
Ciao!
Luca


title: C#, Invoke e multithreading

text:
Salve a tutti,
ho un piccolo dubbio sul multithreading: sto realizzando un'applicazione C# che si occupa di interrogare un dispositivo e di inserire in una listbox le stringhe che riceve dallo stesso dispositivo.

Gli eventi che si verificano sul dispositivo sono asincroni quindi ho inserito le istruzioni di interrogazione in un ciclo infinito.

Ovviamente quando il ciclo parte perdo il controllo sull'interfaccia grafica... leggendo sulla MSDN ho letto che potrei risolvere utilizzando un thread apposito per effettuare il ciclo, mentre il thread principale si occupa di gestire l'interfaccia grafica: il problema sorge quando accedo dal thread secondario alla listbox presente nel primario per aggiungere la stringa e ottengo un'eccezione.

La MSDN consiglia di usare i metodi Invoke per richiamare i controlli presenti sul form, però non sto riuscendo a capirne la logica di fondo... chi mi aiuta fornendomi qualche esempio?

saluti,
2M23


title: C#, Invoke e multithreading

author: Mauro Servienti [MVP]

text:
Ciao 2M23,

You wrote on 20/09/2011 :
> La MSDN consiglia di usare i metodi Invoke per richiamare i controlli
> presenti sul form, però non sto riuscendo a capirne la logica di fondo... chi
> mi aiuta fornendomi qualche esempio?

l'inghippo, stringendo stringendo, è che la message pump è sincrona al
main thread, devi quindi fare marshaling della chiamata, una cosa del
tipo:

class MyWindow
{

   delegate void SafeChangeTitleHandler( String newText );

   void SafeChangeTitle( String newTitle )
   {
       if( this.InvokeRequired )
       {
           var d = new SafeChangeTitleHandler( SafeChangeTitle );
           this.Invoke( d, new Object[]{ newTitle } );
       }
       else
       {
           this.Text = newTitle;
       }
   }
}

okkio che ho scritto al volo nel news reader :-)

.m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro

blog @
http://milestone.topics.it

whynot [ at ] topics [ dot ] it


title: C#, Invoke e multithreading

text:
Il giorno martedì 20 settembre 2011 20:41:40 UTC+2, Mauro Servienti [ MVP ] ha scritto:
> l'inghippo, stringendo stringendo, è che la message pump è sincrona al
> main thread, devi quindi fare marshaling della chiamata, una cosa del
> tipo:
>
> class MyWindow
> {
>
>    delegate void SafeChangeTitleHandler( String newText );
>
>    void SafeChangeTitle( String newTitle )
>    {
>        if( this.InvokeRequired )
>        {
>            var d = new SafeChangeTitleHandler( SafeChangeTitle );
>            this.Invoke( d, new Object[]{ newTitle } );
>        }
>        else
>        {
>            this.Text = newTitle;
>        }
>    }
> }
>
> okkio che ho scritto al volo nel news reader :-)
>
> .m

perfetto, però forse è meglio fare qualche passo indietro, perchè ho qualche problema con le regole di scope... mi spiego meglio, riportando la struttura minimale della mia classe:

public partial class frmMain : Form
{
  //qui dichiaro e istanzio il dispositivo myDev
  tipoDev myDev = new tipoDev();

  //ora dichiaro il thread parallelo che usa il metodo "polling"
  Thread server = new Thread(polling);

  private void polling()
  {
    //qui c'è il ciclo while infinito che effettua l'interrogazione di myDev
    //e aggiorna la listbox
  }

  private void Form1_Load(object sender, EventArgs e)
  {
    //dapprima inizializzo myDev con le opportune opzioni
    myDev.setName("Dispositivo di prova");

    //quindi faccio partire il thread secondario
    server.Start();
  }
}

innanzitutto per far vedere polling() all'atto dell'istanziazione del Thread devo dichiararlo come static, e per raggiungere myDev nel metodo polling anche myDev deve essere static.
Adesso ho il problema che dall'interno di polling non riesco a vedere la listbox... qualche consiglio?

ciao,
2M23


title: C#, Invoke e multithreading

text:
Ciao 2M23,

You wrote on 21/09/2011 :
> perfetto, però forse è meglio fare qualche passo indietro, perchè ho qualche
> problema con le regole di scope... mi spiego meglio, riportando la struttura
> minimale della mia classe:
>
> public partial class frmMain : Form
> {
>   //qui dichiaro e istanzio il dispositivo myDev
>   tipoDev myDev = new tipoDev();
>
>   //ora dichiaro il thread parallelo che usa il metodo "polling"
>   Thread server = new Thread(polling);
>
>   private void polling()
>   {
>     //qui c'è il ciclo while infinito che effettua l'interrogazione di myDev
>     //e aggiorna la listbox
>   }
>
>   private void Form1_Load(object sender, EventArgs e)
>   {
>     //dapprima inizializzo myDev con le opportune opzioni
>     myDev.setName("Dispositivo di prova");
>
>     //quindi faccio partire il thread secondario
>     server.Start();
>   }
> }
>
> innanzitutto per far vedere polling() all'atto dell'istanziazione del Thread
> devo dichiararlo come static, e per raggiungere myDev nel metodo polling
> anche myDev deve essere static.

aggiungi un costruttore pubblico senza parametri alla tua form:

public partial class frmMain : Form
{
  Thread server = null;
  public frmMain()
  {
     this.server = new Thread(polling);
  }
}

a questo punto dimenticati di static, è il male assoluto :-)

> Adesso ho il problema che dall'interno di polling non riesco a vedere la
> listbox... qualche consiglio?

rimuovendo static scompare anche questo problema.



title: [WCF] servizio con più contratti: come genero diversi proxy?

author: Giulio Petrucci

text:
Ciao a tutti,
con WCF ci sto prendendo *molto* gusto. :-)
Ora, sono arrivato a questa impostazione:
- IFooService (contratto)
- IBarService (contratto)
- ... (contratto)
- AcmeService è la classe che implementa tutte le interfacce,
implementata in N classi parziali per facilitarmi la vita. :-) Ogni
contratto è registrato in un end-point con un WSHttpBinding.
Ora, sto cercando di implementare il client, generando i proxy mediante
svcutil.exe. Mi chiedevo: come è possibile generare un proxy per ogni
diversa interfaccia? Su MSDN ancora non ho trovato nulla. :-(
Ciao,
Giulio
--


text:
Ciao Giulio,
You wrote on 02/03/2011 :
> AcmeService è la classe che implementa tutte le interfacce, implementata in N
> classi parziali per facilitarmi la vita. :-) Ogni contratto è registrato in
> un end-point con un WSHttpBinding.
perchè tutte sulla stessa classe?
> Ora, sto cercando di implementare il client, generando i proxy mediante
> svcutil.exe. Mi chiedevo: come è possibile generare un proxy per ogni diversa
> interfaccia? Su MSDN ancora non ho trovato nulla. :-(
esponi n "servizi" *.svc che usano la stessa classe come servizio.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


text:
Ciao Mauro,
On 3/2/2011 6:56 PM, Mauro Servienti [MVP] wrote:
> perchè tutte sulla stessa classe?
Quando instanzio l'host devo passare il tipo che implementa il servizio,
giusto?
Il problema e l'indicazione di usare classi parziali l'ho trovato ieri
girovagando su stackoverflow (ora sono alla disperata ricerca del link
ma non lo ritrovo... :-/)
> esponi n "servizi" *.svc che usano la stessa classe come servizio.
Perfetto.
Grazie,
Giulio
--


text:
Ciao Giulio,
You wrote on 03/03/2011 :
> Quando instanzio l'host devo passare il tipo che implementa il servizio,
> giusto?
> Il problema e l'indicazione di usare classi parziali l'ho trovato ieri
> girovagando su stackoverflow (ora sono alla disperata ricerca del link ma non
> lo ritrovo... :-/)
Non vedo nessun vantaggio pratico nell'usare questo approccio.



text:
On 3/4/2011 4:39 AM, Mauro Servienti [MVP] wrote:
> Non vedo nessun vantaggio pratico nell'usare questo approccio.
Nemmeno io. :-)
E' solo che non sono riuscito a fare altrimenti.
Ciao,
Giulio
--


text:
Ciao Giulio,
You wrote on 04/03/2011 :
> E' solo che non sono riuscito a fare altrimenti.
ma un contratto -> una classe -> un file svc cosa hanno di sbagliato?



text:
Ciao Mauro,
On 3/5/2011 6:13 AM, Mauro Servienti [MVP] wrote:
> ma un contratto -> una classe -> un file svc cosa hanno di sbagliato?
Nello scenario in cui mi trovo, sto cercando di hostare il servizio in
un applicazione da console. Da quel poò che ho visto, quando instanzio
l'host, devo passare come argomento il tipo concreto della classe che
implementa il servizio, giusto? Ora, sono nella necessità di esporre
*due* interfacce nello stesso host. Come posso fare? Devono
necessariamente essere implementate dalla stessa classe concreta, giusto?
Ciao e grazie,
Giulio
--


text:
Ciao Giulio,
You wrote on 07/03/2011 :
> Come posso fare?
un thread un ServiceHost :-)
Avvia la console, lanci n thread tanti qanti sono i servizi che devi
hostare metti in attesa i thread, metti in attesa la console usando
*tutti* gli wait handle che sono legati uno ad ogni thread.
> Devono necessariamente essere implementate dalla stessa
> classe concreta, giusto?
no :-)



text:
Ciao Mauro,
On 3/8/2011 11:26 AM, Mauro Servienti [MVP] wrote:
> un thread un ServiceHost :-)
[cut]
Ok, faccio qualche prova e poi ti dico. :-)
Grazie,
Giulio
--


title: Posizione di un item in una Enumerazione

text:
?ho la seguente enumerazione:
enum Color { Red = 'R',  Yellow = 'Y', Blue = 'B' };
Volevo sapere se era possibile avere una funzione che mi ritorni la
posizione all'interno della enumerazione Color
Ad esempio chiamiamo Ord questa funzione se scrivessi Ord(Color.red)
dovrebbe ritornare 0,
mentre Ord(Color.Yellow) dovrebbe ritornare 1, e cosi via.....


text:
Il 11/12/2010 09:54, ferradini ha scritto:
> ?ho la seguente enumerazione:
> enum Color { Red = 'R', Yellow = 'Y', Blue = 'B' };
>
>
> Volevo sapere se era possibile avere una funzione che mi ritorni la
> posizione all'interno della enumerazione Color
>
Prima di provare a rispondere, vorrei capire quale sia la tua esigenza:
perchè vorresti conoscere la posizione dell'elemento?
--
.A
GUISA -
http://www.guisa.org
UGIdotNET -
http://www.ugidotnet.org
Read my blog at:
http://blogs.ugidotnet.org/pape


text:
? vorrei usare la posizione all'interno dell'enumerazione come indice di un
array che contiene altri valori numerici
legati a colori...
qualcosa del tipo aryColori[Ord(Color.yellow,5)]


text:

I valori di una enum appartengono al cosiddetto underlying type, che
di default e' proprio Int32, per cui ti basterebbe sincerarti che i
valori in questione partono da zero e sono consecutivi: dopodiche' con
un cast (esplicito) a Int32 ottieni il valore numerico corrispondente:
    enum Color { Red = 0, Yellow, Blue, };
    Color color = Color.Blue;
    int iColor = (int)color;
<
http://msdn.microsoft.com/en-us/library/sbbt4032.aspx
>
E' buona pratica commentare la tua enum in modo che nessuno possa in
futuro pensare che Blue e' meglio spostarlo prima di Yellow: la
semantica standard di un enum consente certi cambiamenti senza impatto
sul codice restante (e' appunto il vantaggio di usare etichette al
posto di valori numerici espliciti), ma nel tuo caso una modifica del
genere "romperebbe" il programma.
HTH,
-LV


text:
?
"LudovicoVan" <
ju...@diegidio.name
> ha scritto nel messaggio
> di default e' proprio Int32, per cui ti basterebbe sincerarti che i
> valori in questione partono da zero e sono consecutivi: dopodiche' con
> un cast (esplicito) a Int32 ottieni il valore numerico corrispondente:
Il problema è che io devo necessariamente scrivere
enum Color { Red = 'R', Yellow = 'Y', Blue = 'B' };
e non     enum Color { Red = 0, Yellow, Blue, };


author: Alessandro Riolo

text:
"ferradini" <
liv...@interfree.it
> wrote:
> qualcosa del tipo aryColori[Ord(Color.yellow,5)]
Perché non usi Dictionary<K,V>?
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
--
ale
http://ale.riolo.co.uk


text:
On Dec 11, 4:45 pm, "ferradini" <
liv...@interfree.it
> wrote:
> ?
>
> "LudovicoVan" <
ju...@diegidio.name
> ha scritto nel messaggio
>
> > di default e' proprio Int32, per cui ti basterebbe sincerarti che i
> > valori in questione partono da zero e sono consecutivi: dopodiche' con
> > un cast (esplicito) a Int32 ottieni il valore numerico corrispondente:
>
> Il problema che io devo necessariamente scrivere
> enum Color { Red = 'R', Yellow = 'Y', Blue = 'B' };
>
> e non     enum Color { Red = 0, Yellow, Blue, };
Allora mi piace l'idea di Alessandro Riolo, con un dictionary che
mappa i valori dell'enum agli indici dell'array.
-LV