martedì 13 ottobre 2026

C# ADO.NET: come verificare se i valori di una colonna di un DataTable sono univoci

In questo esempio, vediamo come utilizzare LINQ in ADO.NET per verificare se tutti i valori di una determinata colonna di tipo int di un oggetto DataTable sono univoci, ovvero se non sono presenti duplicati.

Di seguito è riportato un esempio di codice in C#:

C#

bool valoriUnivoci =dttDati.AsEnumerable().Select(r => r.Field<int>("Colonna"))

    .Distinct()

    .Count()

 == dttDati.AsEnumerable().Count();


Il codice estrae i valori della colonna "Colonna", elimina gli eventuali duplicati tramite il metodo Distinct() e confronta il numero di valori distinti con il numero totale di righe del DataTable.

Se i due conteggi coincidono, la variabile valoriUnivoci assume il valore true, indicando che tutti i valori della colonna sono univoci. In caso contrario, assume il valore false, indicando la presenza di duplicati.

Nota: l'esempio presuppone che la colonna esista, sia di tipo int e non contenga valori DBNull.

lunedì 12 ottobre 2026

C# Windows Forms: richiamare un metodo di una form da un'altra form

In questo trucco vediamo come richiamare, in C# e nell'ambiente Windows Forms, un metodo presente in una form (FormA) da un'altra form (FormB), aperta dalla prima.

Per ottenere questo risultato, utilizzeremo un riferimento all'istanza di FormA, che verrà passato a FormB attraverso il suo costruttore.

1. Dichiarazione del metodo nella FormA
Nella form principale, che chiameremo FormA, creiamo un metodo denominato CaricaDati.

Il metodo deve essere dichiarato con il modificatore di accesso public, in modo da poter essere richiamato anche dall'esterno della classe.

Di seguito riportiamo un esempio di implementazione:



C#

public void CaricaDati()

 {

     try

     {

          //Codice

     }

     catch (Exception ex)

     {

         Utility.MessaggioErrore("Errore durante il caricamento dell'applicativo." + ex.Message);

     }

       

       

       

 }

 

2. Dichiarazione del riferimento a FormA nella FormB
Nella seconda form, denominata FormB, dichiariamo un campo privato che conterrà il riferimento all'istanza di FormA.

C#

private Form1? frmPrincipale;



Il simbolo ? indica che il campo può contenere anche un valore null. Questa sintassi è utilizzabile nei progetti C# che supportano i tipi di riferimento nullable.

3. Passaggio del riferimento tramite il costruttore
Sempre all'interno di FormB, aggiungiamo un costruttore che riceve come parametro il riferimento a FormA.

C#

public FormB(FormA frm_Principale)

{

    InitializeComponent();

    frmPrincipale = frm_Principale;

 

}




In questo modo, quando viene creata un'istanza di FormB, possiamo passarle il riferimento alla form principale.

Nota: il parametro del costruttore deve essere di tipo FormA, così da poter accedere ai metodi pubblici definiti in questa classe.

4. Richiamo del metodo dalla FormB
A questo punto, nell'evento Click di un pulsante presente in FormB, possiamo richiamare il metodo CaricaDati() della form principale.


C#

if (frmPrincipale != null)

    frmPrincipale.CaricaDati ();



Prima di eseguire il metodo, verifichiamo che il riferimento a FormA non sia null.
Se il riferimento è valido, il metodo CaricaDati() viene eseguito sull'istanza di FormA che abbiamo ricevuto tramite il costruttore.

5. Apertura di FormB dalla FormA
Infine, torniamo in FormA e modifichiamo il codice che apre la seconda form, passando this al suo costruttore.

C#

 Cursor.Current = Cursors.WaitCursor;

using (FormB frmB = new FormB(this))

{

    frmB.ShowDialog();

}


Cursor.Current = Cursors.Default;



La parola chiave this rappresenta l'istanza corrente di FormA. In questo modo, FormB riceve esattamente il riferimento alla form dalla quale viene aperta.

Abbiamo inoltre utilizzato using per garantire il rilascio delle risorse di FormB al termine del suo utilizzo e finally per ripristinare il cursore anche se si verifica un'eccezione.

Conclusioni
Come abbiamo visto, per richiamare un metodo di una form da un'altra form in C# è possibile passare il riferimento alla form principale attraverso il costruttore della seconda form.

Questo approccio permette di accedere ai metodi pubblici dell'istanza ricevuta senza dover creare una nuova istanza della form principale.

È una soluzione semplice e utile quando si lavora con applicazioni Windows Forms e si desidera far interagire due form tra loro.

domenica 11 ottobre 2026

download gioco The Hat Man

 

gioco the hat man download


Il videogioco The Hat Man è disponibile gratuitamente sull'Epic Games Store per sistemi operativi Windows.

Si tratta di un gioco horror psicologico in prima persona, con testi in lingua inglese, ispirato alla leggenda urbana dell'Uomo con il Cappello.

Per maggiori informazioni, per consultare i requisiti di sistema e per scaricare il gioco, visitate la pagina ufficiale: https://store.epicgames.com/p/the-hat-man-cb045e

venerdì 9 ottobre 2026

Download ebook Ethical AI for Developers

 

free ebook ethical ai for developers

Dal seguente sito https://www.syncfusion.com/succinctly-free-ebooks/ethical-ai-for-developers-succinctly è possibile scaricare gratuitamente un ebook, disponibile in lingua inglese, dedicato all’uso etico dell’intelligenza artificiale nello sviluppo software, un tema sempre più importante per gli sviluppatori.

mercoledì 7 ottobre 2026

download gioco Hidden Objects - Items Find

 

download video gioco Hidden Objects - Items Find


Hidden Objects - Items Find è un videogioco di avventura e puzzle, adatto ai bambini e non solo, disponibile anche in lingua italiana per sistemi operativi Windows.

Il gioco propone diverse ambientazioni 2D nelle quali il giocatore deve trovare centinaia di oggetti nascosti. È disponibile gratuitamente sulla piattaforma Epic Games Store.

Per maggiori informazioni e per scaricare il gioco, è possibile visitare la pagina ufficiale su Epic Games: https://store.epicgames.com/p/hidden-objects-items-find-f72425

martedì 6 ottobre 2026

Eseguire una funzione a intervalli regolari con C# e Windows Forms

Il frammento di codice riportato di seguito illustra una tecnica, in ambiente C# e Windows Forms, per eseguire una funzione a intervalli regolari.
Le operazioni vengono gestite tramite la classe Timer di Windows Forms che, una volta configurata, genera periodicamente l'evento Tick, all'interno del quale è possibile richiamare la funzione desiderata.

Di seguito viene riportato un esempio per illustrare questa tecnica.

Dichiarazione del Timer
A livello di form, dichiariamo un oggetto della classe Timer e una variabile booleana che utilizzeremo per evitare che la funzione venga eseguita nuovamente mentre è ancora in corso un'esecuzione precedente.


C#
 

System.Windows.Forms.Timer timerRipeti;

 bool inEsecuzione = false;




Gestione dell'evento Tick
Creiamo quindi un gestore per l'evento Tick del Timer.



C#

private void TimerRipeti_Tick(object sender, EventArgs e)

{

    if (inEsecuzione)

        return;

           

    try

    {

        inEsecuzione = true;

        NomeFunzione();

    }

    finally

    {

        inEsecuzione = false;

    }

}



La variabile inEsecuzione permette di verificare se la funzione è già in esecuzione. In questo modo, nel caso in cui venga generato un nuovo evento Tick mentre l'operazione precedente non è ancora terminata, la nuova esecuzione viene ignorata.

Configurazione del Timer
Nell'evento Load della form inizializziamo il Timer, colleghiamo il gestore dell'evento Tick e impostiamo l'intervallo di esecuzione.

Nell'esempio seguente la funzione verrà richiamata ogni minuto:


C#

  timerRipeti = new System.Windows.Forms.Timer();

  timerRipeti.Tick += TimerRipeti_Tick;

 

            

  int minuti = 1; // minuti

  timerRipeti.Interval = minuti * 60 * 1000;


Infine, per avviare effettivamente il timer, è necessario chiamare il metodo Start():
timerRipeti.Start();

lunedì 5 ottobre 2026

Windows 11 – Aggiornare le app dal Microsoft Store

 

Windows 11 aggiornamento app dal Microsoft Store

Introduzione

In questo articolo vedremo come aggiornare le app installate sul PC con Windows 11 direttamente dal Microsoft Store.

Alcune delle applicazioni installate sul PC Windows 11 sono disponibili tramite il Microsoft Store. Lo Store ne consente la gestione e, quando previsto, la distribuzione degli aggiornamenti.

Mantenere le applicazioni aggiornate è importante sia per usufruire delle nuove funzionalità e dei miglioramenti introdotti dagli sviluppatori, sia per contribuire alla sicurezza del sistema. È quindi consigliabile verificare periodicamente la disponibilità di nuovi aggiornamenti.

Dal menu Start, scorriamo l'elenco dei programmi fino a trovare Microsoft Store (figura 1). In alternativa, se l'icona è presente nella barra delle applicazioni di Windows, possiamo fare clic direttamente su di essa.

Windows 11 aggiornamento app dal Microsoft Store
Figura 1  - La voce di menu Microsoft Store

Una volta aperto Microsoft Store, nella barra laterale sinistra, in basso, troviamo l’icona a forma di nuvola con la voce Download. Facciamo clic su di essa, come mostrato nella figura 2.
Windows 11 aggiornamento app dal Microsoft Store
Figura 2 – L’icona degli aggiornamenti

Facendo clic sul pulsante, verrà visualizzata la schermata dedicata agli aggiornamenti delle app di Windows. In particolare, verrà mostrato l’elenco delle applicazioni per le quali è disponibile un aggiornamento.
Windows 11 aggiornamento app dal Microsoft Store
Figura 3 – La schermata degli aggiornamenti da effettuare


La schermata permette di aggiornare una singola applicazione installata facendo clic sul pulsante Aggiorna, posto sul lato destro dell’applicazione. In alternativa, facendo clic sul pulsante Aggiorna tutto, situato nella parte superiore destra della schermata, è possibile aggiornare tutte le applicazioni per le quali è disponibile un aggiornamento.

Tramite il pulsante Controlla aggiornamenti è invece possibile verificare nuovamente la disponibilità di eventuali aggiornamenti. Questa funzione può essere utilizzata anche quando tutte le applicazioni risultano già aggiornate, per verificare se sono disponibili nuovi aggiornamenti.

Conclusioni

Su un PC con sistema operativo Windows 11, possiamo installare le applicazioni utilizzando pacchetti di installazione oppure tramite il Microsoft Store.

È importante controllare periodicamente la disponibilità di aggiornamenti e mantenere aggiornati sia le applicazioni sia il sistema operativo Windows. Gli aggiornamenti possono infatti includere correzioni di sicurezza, nuove funzionalità, miglioramenti delle prestazioni e correzioni di eventuali problemi.

domenica 4 ottobre 2026

download gioco gratuito Legion Hunters

 

Gioco gratuito legion Hunters

Sulla piattaforma Epic Games è disponibile gratuitamente Legion Hunters, un videogioco di strategia.

Il gioco, disponibile in lingua inglese, può essere scaricato gratuitamente su PC Windows.

Per maggiori informazioni e per effettuare il download, visitate la pagina ufficiale del gioco: https://store.epicgames.com/p/legion-hunters-81dd19

Free ebook Prompt Engineering for Developers

 

free ebook prompt AI

Un ebook molto interessante dedicato al prompt engineering per l’intelligenza artificiale, pensato in particolare per gli sviluppatori.

Dal sito di Syncfusion è possibile scaricare gratuitamente l’ebook, disponibile in lingua inglese, che affronta uno dei temi più discussi e attuali nel campo dell’intelligenza artificiale: la creazione e l’utilizzo efficace dei prompt nello sviluppo software.

Dal seguente sito https://www.syncfusion.com/succinctly-free-ebooks/prompt-engineering-for-developers-succinctly è possibile scaricare l'ebook.

sabato 3 ottobre 2026

Toro: un programma gratuito per Windows per conoscere e gestire il proprio sistema

 

Programma Toro - software gratuito in C#

Da qualche mese ho pubblicato sul mio profilo GitHub un nuovo progetto chiamato Toro, un programma gratuito pensato per Windows che permette di raccogliere informazioni sul sistema e di utilizzare diverse funzionalità e utilità.

Il progetto è disponibile su GitHub e il codice sorgente è scritto in C#.  https://github.com/Emanuele2025/Toro   

Toro permette, tra le altre cose, di visualizzare informazioni sull'hardware e sul software del computer, utilizzare strumenti di diagnostica della rete, gestire alcune operazioni sui file e accedere a diverse utilità. Il progetto include inoltre funzionalità come convertitori e strumenti aggiuntivi per Windows.

L'applicazione è pensata per essere semplice da utilizzare e può essere utile a chi desidera avere in un unico programma alcune informazioni e funzionalità relative al proprio PC.

Il progetto è open source ed è distribuito con licenza GPL-3.0.

Sono sempre interessato a ricevere feedback, consigli e suggerimenti da parte di chi vorrà provare il programma. Le vostre segnalazioni possono essere utili per individuare eventuali problemi, migliorare le funzionalità esistenti e svilupparne di nuove.

Se siete interessati a provarlo o a dare un'occhiata al codice sorgente, trovate il progetto su GitHub: https://github.com/Emanuele2025/Toro

Ogni feedback è benvenuto e soprattutto di grande atiuto.

venerdì 2 ottobre 2026

download ebook .NET Aspire

 

free ebook aspire


È disponibile gratuitamente “.NET Aspire Succinctly”, un ebook pubblicato da Syncfusion che offre un'introduzione a .NET Aspire, il framework pensato per semplificare lo sviluppo, l'orchestrazione e la gestione di applicazioni distribuite e cloud-native basate su .NET.

L'ebook, scritto in lingua inglese, è dedicato sia a chi vuole conoscere .NET Aspire sia a chi desidera approfondirne l'utilizzo attraverso esempi pratici. Il testo tratta, tra gli altri argomenti, l'orchestrazione dei servizi, la service discovery, la telemetria e l'utilizzo della dashboard di Aspire

Il libro è disponibile gratuitamente per il download ed è anche consultabile online.

Per maggiori informazioni e per scaricare l'ebook, è possibile visitare il sito di Syncfusion: .NET Aspire Succinctly® | Free Ebook | Syncfusion®

giovedì 1 ottobre 2026

Software gratuito di clonazione SSD e HHD AOMEI Clone

 

Programma gratuito AOMEI  Clone

È disponibile gratuitamente per Windows AOMEI Backupper, un programma che permette di clonare dischi e unità di memoria, come SSD e HDD.

Il programma è disponibile anche in lingua italiana.

Per maggiori informazioni e per scaricare il programma, visitate il seguente sito:  https://www.ubackup.com/it/clone/  

mercoledì 30 settembre 2026

free ebook Mobile Web Wrappers with .NET MAUI

 

free ebook Mobile Web Wrappers with .NET MAUI

Un nuovo ebook del nostro amico Alessandro Del Sole, questa volta dedicato allo sviluppo software per dispositivi mobili utilizzando il framework .NET MAUI.

L'ebook, di circa 100 pagine e scritto in lingua inglese, è disponibile gratuitamente per il download sul sito di Syncfusion:

https://www.syncfusion.com/succinctly-free-ebooks/mobile-web-wrappers-with-dot-net-maui-succinctly


lunedì 28 settembre 2026

Modelli gratuiti di Microsoft Excel - Maestro Excel

 

sito su Microsoft Excel

Il sito Maestro Excel offre agli utenti la possibilità di scaricare gratuitamente modelli per Microsoft Excel, senza la necessità di registrarsi o fornire il proprio indirizzo email.

Il sito, disponibile in lingua italiana, propone modelli dedicati a diversi ambiti, tra cui gestione, finanza, lavoro e costruzioni. Ogni modello è accompagnato da spiegazioni, istruzioni e, in molti casi, da un'anteprima dei fogli disponibili, così da poter valutare il contenuto prima del download. qui il sito https://www.maestroexcel.it/  


domenica 27 settembre 2026

Sito per convertire i file anyconv

 

strumento online per convertire i file

AnyConv è un servizio online, disponibile anche in lingua italiana, che permette di convertire gratuitamente i file da un formato all’altro, senza bisogno di registrazione.

Per effettuare una conversione, è sufficiente caricare il file desiderato e selezionare il formato nel quale si vuole convertirlo.

Per utilizzare il servizio e per maggiori informazioni, visitate il sito ufficiale di AnyConv: https://anyconv.com/it/

sabato 26 settembre 2026

Evento gratuito Dev Days Rome, Italy

Il Dev Days Rome Italy è un evento gratuito e aperto a tutti, dedicato all'utilizzo di GitHub Copilot e, più in generale, alle tecniche e alle funzionalità per la gestione del codice sorgente attraverso GitHub.
L'evento si terrà in presenza presso la sede di Microsoft Italia a Roma, nella mattinata di 2 ottobre 2026.
Per partecipare è necessario registrarsi tramite il seguente sito:


Nella pagina dell'evento sono disponibili ulteriori informazioni sull'iniziativa, sul programma e sulle modalità di partecipazione.

venerdì 25 settembre 2026

C# ADO.NET Verificare se in un record di un DataTable sono presenti valori

In questo tip di programmazione C# con ADO.NET vediamo come verificare se, all'interno di un record di un DataTable, sono presenti determinati valori numerici.
In particolare, supponiamo di avere alcune colonne di tipo int e di voler verificare se, per un determinato record, tali colonne contengono un valore diverso da 0.

Di seguito un esempio:

C#

        DataTable dttDatiGestione = new DataTable();

         dttDatiGestione.Columns.Add(new DataColumn("ID", typeof(int)));

        dttDatiGestione.Columns.Add(new DataColumn("Numero", typeof(int)));

        dttDatiGestione.Columns.Add(new DataColumn("Numero2", typeof(int)));

         DataRow rigaNuova = dttDatiGestione.NewRow();

        rigaNuova[0] = 1;

        rigaNuova[1] = 4;

        rigaNuova[2] = 8;

        dttDatiGestione.Rows.Add(rigaNuova);

        bool trovatoElemento = dttDatiGestione.AsEnumerable()

.Any(p =>

    p.Field<int>("ID") == 1 &&

    (p.Field<int?>("Numero") ?? 0) != 0 &&

    (p.Field<int?>("Numero2") ?? 0) != 0



In questo caso, Any() restituisce true se esiste almeno una riga in cui:

la colonna ID contiene il valore 1;
la colonna Numero contiene un valore diverso da 0;
la colonna Numero2 contiene un valore diverso da 0.

L'utilizzo di Field<int?>() consente inoltre di gestire eventuali valori DBNull. Grazie all'operatore ?? 0, un eventuale valore NULL viene considerato equivalente a 0.

Nel nostro esempio, poiché Numero vale 4 e Numero2 vale 8, la variabile trovatoElemento assumerà il valore true.