domenica 21 aprile 2019

.Net utilizzo del controllo notifyIcon tramite VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_net-utilizzo-del-controllo-notifyicon-tr_1629.aspx


In questo articolo vedremo come utilizzare nelle nostre applicazioni di tipo “Windows Application” il controllo NotifyIcon, che permette di visualizzare un’icona nella traybar, quell’area posta vicino all’orologio nel quale sono visibili le icone più utilizzate o informative come il livello della batteria, la connessione ad una rete, e così continuando.
Per le immagini possiamo andare al seguente sito https://icons8.com/icons oppure utilizzare quelle che abbiamo o da altri siti.
Il controllo può tornate utile nei contesti in cui vogliamo nasconderlo nel momento in cui si riduce ad icona.
Una prassi per lasciare libero lo schermo ma al tempo stesso aperto il programma.
L’articolo riguarderà i due linguaggi di programmazione più utilizzati in ambito .Net

Creazione del progetto

Si crea un progetto di tipo “Windows Application” che presumiamo che il lettore già conoscerà, con il linguaggio di proprio interesse.
Una volta creato il progetto, trasciniamo sul form il controllo Notifylcon che troviamo nella barra degli strumenti, tra i controlli più comuni, il tutto come mostrato in figura 1 e 2.





Figura 1 e 2 – il controllo notifyicon trascinata sulla form

A questo punto nella barra delle proprietà abbiamo la possibilità di impostare alcuni valori che ci semplificano di molto lo scenario di una notifica nella trayBar.
Vediamo in particolar modo alcune delle proprietà più comune, ma molte impostazioni andranno settare alcune informazioni utili.
Vediamo alcune proprietà da valorizzare.
Come riportato in figura 2, la proprietà BalloonTipIcon, permette di impostare il tipo di icona che il controllo offre, informativa, errore o altro.
Mentre la proprietà BalloonTipText permette d impostare la descrizione, nel senso il testo che verrà visualizzato all’utente, quindi un messaggio informativo o il motivo dell’errore.
La proprietà BalloonTipTitle riguarda invece il titolo, quindi un testo che verrà posta nella parte superiore della notifica, possiamo valorizzarlo con il nome del programma.
Nella finestra delle proprietà, ancora non abbiamo impostato il menu, relativo alla proprietà “ContextMenuStrip” che viene aperto quando si fa click con il pulsante destro sull’icona posta nella trayBar, ma che vedremo a breve.
La proprietà Icon, permette di impostare una icona nostra, da visualizzare nella barra.
Infine la proprietà “Text” permette di impostare il testo con il quale visualizzare all’utente un messaggio quando il mouse si trova in vicino all’icona nella trayBar.


Figura 3 – la finestra delle proprietà con il testo impostato.

Dopo aver fornito questa panoramica delle proprietà del controllo, passiamo al relativo funzionamento.
Se viene avviato il programma, così com’è non funziona, dovremmo scrivere nell’evento della form, il metodo per visualizzare la notifica.
In particolare utilizzare il metodo “ShowBalloonTip” passando come parametro un numero intero, con il quale viene indicato per quanti millisecondi viene visualizzato la notifica.



VB.Net

notifyIcon1.ShowBalloonTip(4000)
C#

notifyIcon1.ShowBalloonTip(4000);


Ora vediamo come utilizzarlo nel modo migliore, aggiungiamo un controllo di tipo menu contestuale è precisamente denominato “ContextMenuStrip”, lo valorizziamo con due voci di menu “Messaggio” e “Esci” (figura 4) dove per esci, si chiude la form, mentre per la voce “Messaggio” visualizza una messaggebox.


Figura 4 – Il menu contestuale

Qui di seguito il codice delle due voci di menu.



VB.Net

Private Sub messaggioToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles messaggioToolStripMenuItem.Click

        MessageBox.Show("Testo")

    End Sub

 

    Private Sub esciToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles esciToolStripMenuItem.Click

        Me.Close()

    End Sub

C#

 

private void messaggioToolStripMenuItem_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Testo");

        }

 

        private void esciToolStripMenuItem_Click(object sender, EventArgs e)

        {

            this.Close();

        }


Ora dobbiamo settare la proprietà “ContextMenuStrip” del controllo notifyicon con il menu appena aggiunto, il tutto come mostrato in figura 5.


Figura 5 – Il menu contestuale impostato nella proprietà del controllo notifica.

Ora vediamo come utilizzarlo nelle situazioni standard, in particolare visualizzare la notifica nel momento in cui si riduce ad icona la nostra for, in questo caso, la form verrà nascosto mentre verrà visualizzata l’icona.
Se facciamo doppio click sull’icona verrà aperta, altrimenti no.
Prima di tutto dobbiamo scrivere il codice che al doppio click sull’icona visualizza la form oppure nasconde la form.
Dalla finestra delle proprietà del controllo di notifica, facciamo doppio click sull’evento “MouseDoubleClick” come mostrato in figura 6.



Figura 6 – La generazione dell’evento di doppio click.

In questo modo passiamo alla visualizzazione codice che ci permette di gestire il doppio click sull’icona e fare in modo che venga aperta la nostra applicazione.
Nell’evento dobbiamo scrivere il codice che visualizza la form e ripristina lo stato della finestra in modalità normale.
Qui di seguito le dichiarazioni per entrambi i linguaggi.


VB.Net

  Private Sub notifyIcon1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles notifyIcon1.MouseDoubleClick

        Me.Show()

        Me.WindowState = FormWindowState.Normal

    End Sub

 C#

  private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            this.Show();

            this.WindowState = FormWindowState.Normal;

        }


Nell’evento “Resize” della nostra form, dobbiamo gestire la possibilità di nascondere il nostro applicativo, nel caso che viene minimizzato, in questo modo non sarà visibile e con l’area desktop pulita. Abbiamo anche inserito il frammento di codice per visualizzare la notifica
Qui di seguito il frammento di codice per tali operazioni.



VB.Net

Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize

        If Me.WindowState = FormWindowState.Minimized Then

                     notifyIcon1.ShowBalloonTip(4000)

Me.Hide()

        End If

    End Sub

C#

private void Form1_Resize(object sender, EventArgs e)

        {

            if (this.WindowState == FormWindowState.Minimized)

            {

                notifyIcon1.ShowBalloonTip(4000);

                Hide();

               

            } 

        }



Ora non ci cresta che testare il nostro applicativo, avviando il programma, noteremo che riducendo ad icona verrà visualizzato il messaggio ed il programma verrà nascosto.
Oltre all’icona sarà disponibile un messaggio, il tutto come mostrato in figura 7 ed avremo un menu al testo destro del mouse.




Figura 7 – la notifica che viene eseguita quando si riduce ad icona il programma

Conclusioni

L’articolo ha voluto fornire informazioni utili sul controllo notifica, ma soprattutto come fornire ai nostri progetti di tipo “Windows Application” una funzionalità particolare, scrivendo poche righe di codice.
Un controllo che risulta interessante anche in ambito di quei programma che devono essere eseguiti in modalità nascosta.

venerdì 19 aprile 2019

I voucher digitali 4.0 per la digitalizzzazione delle PMI

campagna voucher

Bella iniziativa della Camera di Commercio, per dare la possibilità a tutte le PMI di digitalizzarsi.
Come riportato qui https://www.puntoimpresadigitale.camcom.it/paginainterna/voucher-digitali-40? la possibilità di ricevere dei voucher che permettono di acquistare prodotti informatici o formazione.
Per maggiori informazioni visitate il sito indicato.

giovedì 18 aprile 2019

C# utilizzo della funzione split per il ritorno a capo \n

Il frammento di codice qui di seguito, permette di estrapolare da una stringa, il testo che si trova a capo
Supponiamo di avere del testo simile a:

Buongiorno
Come
stai
?

Abbiamo 4 righe, e quindi per ottenere da una stringa i 4 elementi dobbiamo utilizzare la seguente sintassi.


 string[] RigheTesto = variabileTesto.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);

In questo modo otteniamo un array di 4 elementi.

mercoledì 17 aprile 2019

Programma gratuito ed open source per il controllo del codice sorgente



Un programma molto usato e conosciuto a livello mondiale per la gestione del codice sorgente.
Parliamo di Git, https://git-scm.com/ che anche per l'ambiente di sviluppo Visual Studio è abbastanza considerato.
Il software, è gratuito ed open source.
Per maggiori informazioni e download visitate il sito indicato.

martedì 16 aprile 2019

download musica online

Se state cercando un sito con il quale scaricare della musica o ascoltarla, dal seguente portale https://www.mp3juices.cc/ è possibile ascoltare o scaricare file musicali che tramite una ricerca in base all'autore o nome canzone si trovano.
Quando si fa click su download verrà aperta una finestra di pubblicità, e ricordiamo sempre di fare attenzione ai diritti d'autore.
Per maggiori informazioni o altro visitate il sito indicato.

lunedì 15 aprile 2019

Sito per scaricare icone gratuite

Free Icons Download

Un sito dove trovare molte icone da scaricare ed usare a proprio piacimento. Il sito http://www.freeiconsdownload.com/index.html in lingua inglese, permette di scaricare senza doversi registrare o lasciare la propria email.

domenica 14 aprile 2019

Sondaggi gratuiti per il proprio sito

Ottimizzato per i tablet

Per coloro che realizzano siti o si occupano di utenti web, può tornare utile la creazione di sondaggi.
Il seguente sito https://www.sondaggio-online.com/ in italiano offre un servizio gratuito per chi vuole realizzare sondaggi.

Per maggiori informazioni ed altro visitate il sito indicato.

sabato 13 aprile 2019

PostgreSQL utilizzo di replace in update

Qui di seguito si riporta un esempio di codice SQL per il database PostgreSQL sull'utilizzo della funzione Replace.

update NomeTabella
set CampoTabella = replace(CampoTabella , 'A', 'a')
where CampoBTabella like '%Emanuele%'

venerdì 12 aprile 2019

Intelligenza artificiale rilasciata la versione ML.NET 1.0 RC

alt text

Rilasciata in questi giorni la versione 1.0 di ML.Net, il framework per la programmazione di applicazione di intelligenza artificiale, versione Release Candidate.
Per maggiori informazione ed altro visitate il seguente sito https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-0-rc-machine-learning-for-net/

giovedì 11 aprile 2019

Download Visual Studio per Mac

Intellisense screenshot

Rilasciata la nuova versione di Visual Studio per Mac, l'ambiente di sviluppo più potente al mondo per la realizzazione di applicazioni per sistemi operativi Mac.
L'ambiente di sviluppo consente con i vari linguaggi, quali C#, F# ed altri di realizzare applicazioni per questo sistema operativo.
Per maggiori informazioni e download visitate il seguente sito https://visualstudio.microsoft.com/it/vs/mac/

Javascript replace carattere \ backslashes

Qui di seguito un frammento di codice in Javascript, che permette di effettuare il replace del carattere di doppio backslashes a singolo, ossia da \\ a \ .

var VariabileString = "valore";
VariabileString = VariabileString.replace(/\\\\/g, '\\');

mercoledì 10 aprile 2019

Sito online per applicare effetti alle immagini

Altro interessante sito con il quale aggiungere effetti alle nostre immagini.
Il seguente sito http://it.funphotobox.com/ anche in lingua italiana, offre la possibilità senza registrarsi e senza lasciare email, di applicare effetti alle immagini.

lunedì 8 aprile 2019

Datagriview impostare l'altezza di una riga

Nel caso che vogliamo impostare una determinata altezza alle righe del nostro datagridview, dobbiamo impostare la sotto proprietà Height che fa parte della proprietà RowTemplate del controll.
Qui un frammento di codice.

   dataGridView1.RowTemplate.Height = 100;


domenica 7 aprile 2019

Programma gratuito per la gestione degli IP

NetSetMan


Un manager per la gestione dei vari IP, nel caso che dobbiamo cambiare indirizzo della rete su vari ambiti.
Il programma NetSetMan scaricabile qui https://www.netsetman.com/it/freeware è un programma in italiano che permette di gestire gli indirizzi IP.
Un software in due versione, uno gratuito ed uno a pagamento.
Per maggiori informazioni e download visitate il sito indicato.

sabato 6 aprile 2019

Sito di trucchi ed articoli su Microsoft Excel

MrExcel Publishing

Un sito in lingua inglese, nel quale trovare trucchi e consigli su come utilizzare nel modo migliore il programma Microsoft Excel.

Il sito è visibile qui https://www.mrexcel.com/ 

venerdì 5 aprile 2019

c# datagridview column image create un oggetto image

Nel caso che vogliamo creare un oggetto di tipo Image, da una colonna di tipo immagine, qui di seguito un frammento di codice che illustra tale tecnica.

Image MiaImmagine = (dataGridView1.Rows[1].Cells[2].Value as Image);


Naturalmente l'indice per la riga e cella dev'essere quella giusta.




giovedì 4 aprile 2019

Download Visual Studio per Mac



Rilasciata in questi giorni la nuova versione di Visual Studio 2019 per lo sviluppo di soluzioni tecnologici in ambito Mac.
L'ambiente di sviluppo più potente e professionale in commercio.
Qui https://visualstudio.microsoft.com/it/vs/mac/ per maggiori informazioni e download.

C# save image to file system, error in gdi+

Può capitare che nel salvare un oggetto Image generato da un array di byte per la creazione di un file immagine, venga generato un errore durante il salvataggio dovuto alla mancanza di impostare alcune proprietà dell'immagine stesso.

Qui di seguito si riporta il frammento di codice nel linguaggio C# all'errore dovuto ad impostazione di proprietà della creazione dell'immagine.


 public static void RidefinisciImmagine(Image image, int height, int width)
        {
            using (Bitmap ImmagineNuova = new Bitmap(image))
            {
                using (Bitmap ImmagineRidefinita = ImmagineNuova .Clone(new System.Drawing.Rectangle(0, 0, width, height), source.PixelFormat))
                {
                    using (Bitmap copiaImmagine = new Bitmap(ImmagineRidefinita .Width, ImmagineRidefinita .Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb))
                    {
                        using (Graphics g = Graphics.FromImage(copiaImmagine ))
                        {
                            g.DrawImageUnscaled(cuttedImage, 0, 0);
                            copiaImmagine .Save(@"D:\tmpImmagineGrid.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                    }
                }
            }
        }


mercoledì 3 aprile 2019

Trasferire file di grandi dimensioni

logo

Oggi segnalo un servizio gratuito per trasferire i file di grandi dimensioni senza richiedere registrazioni o lasciare email.
Dal seguente sito https://toffeeshare.com/ è possibile selezionando i file dal proprio pc ed inviare a conoscenti o se stesso il link per poterlo scaricare.
Il servizio è gratuito, ma funziona con particolari browser, per esempio Chrome, Firefox, ma non con IE o Edge.
Sito in lingua inglese.

martedì 2 aprile 2019

Download Visual Studio 2019




Rilasciata in data odierna la nuova versione di Visual Studio, l'ambiente per la realizzazione di applicazioni più potente al mondo.
La versione rilasciata numero 16 denominata Visual Studio 2019.
Per il download ed informazioni visitate il seguente sito https://visualstudio.microsoft.com/it/

C# HttpWebRequest Authorization basic

Qui di seguito un frammento di codice in C#, per passare utente e password in un oggetto di tipo HttpWebRequest per accedere in un sito tramite credenziali.

           string Credenziali = string.Format("{0}:{1}", "Username", "Password");
                byte[] byteCredenziali = UTF8Encoding.UTF8.GetBytes(Credenziali );
              string  CredenzialiEncode = Convert.ToBase64String(byteCredenziali);


  HttpWebRequest requestChiamata = (HttpWebRequest)WebRequest.Create("URL");

requestChiamata.Headers.Add("Authorization", "Basic " + CredenzialiEncode );

lunedì 1 aprile 2019

Sito gratuito online per fare foto di tipo collage

PhotoCollage.com

Se state cercando un sito online per realizzare immagini di tipo collage, che non richiede nessuna registrazione o di lasciare indirizzo email, il sito photocollage https://www.photocollage.com/ fa al caso vostro.
Dopo aver caricato le immagini, applicato gli effetti e/o testo, il sito realizzare l'immagine per voi.
Un sito in lingua inglese e ben fatto.

domenica 31 marzo 2019

ebook gratuito introduzione a Visual Studio per Mac

Visual Studio for Mac Succinctly Free eBook


Se state cercando un ebook gratuito ed introduttivo alla programmazione Mac con l'ambiente di sviluppo Visual Studio, dal seguente sito https://www.syncfusion.com/ebooks/visual-studio-for-mac-succinctly potete scaricare previa registrazione o account, un ebook di circa 100 pagine in formato Pdf e lingua inglese sulla programmazione Mac.

venerdì 29 marzo 2019

C# VSTO Outlook mailitem SaveAs with name

Il frammento di codice qui di seguito, illustra una tecnica in VSTO di come salvare una email, con il nome dell'oggetto di essa, tramite il metodo "SaveAs" della classe MailItem.

 private string PercorsoEmailSalvato(Outlook.MailItem emailSelezionata)
        {

            try
            {
                 string percorsoTemporaneo = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                String filename = emailSelezionata.Subject;
                string invalidCarattere = new string(System.IO.Path.GetInvalidFileNameChars()) + new string(System.IO.Path.GetInvalidPathChars());

                foreach (char carattere in invalidCarattere)
                {
                    filename = filename.Replace(carattere.ToString(), "");
                }
                string PercorsoNomeFileEmail = percorsoTemporaneo + "\\" + filename + ".msg";
                emailSelezionata.SaveAs(PercorsoNomeFileEmail);
                return PercorsoNomeFileEmail;

            }
            catch (Exception ex)
            {
                 MessageBox.Show("Si è verificato il seguente errore: " + ex.Message);
                 return "";
            }


        }

Il frammento di codice precedente, elimina i caratteri speciali che possiamo trovare nell'oggetto per comporre il nome del file di posta elettronica, che sarà di tipo ".msg".
Creando un percorso temporaneo con il relativo nome.


giovedì 28 marzo 2019

free ebook Microsoft Azure and the Microsoft Cloud

An Introduction to Microsoft Azure and the Microsoft Cloud


Un ebook gratuito di circa 200 pagine in lingua inglese e formato pdf, quello scaricabile dal seguente sito https://sf.tradepub.com/free/w_thbc01/prgm.cgi riguardante l'introduzione al mondo Cloud di Microsoft, tramite il prodotto Azure.

mercoledì 27 marzo 2019

Servizio online di storage gratuito

Un sito che offre gratuitamente ben 100 gb di storage gratuito, per gestire i file.
Il sito Degoo visibile qui https://degoo.com/ in lingua inglese, offre la possibilità di archiviare gratuitamente tantissimi file, utilizzando anche smartphone come Android e oppure IOS.

martedì 26 marzo 2019

Immagini ed icone gratuite

Free Icons - IconsPedia

Altro sito e motore di ricerca dopo poter scaricare gratuitamente icone.
Qui https://www.iconspedia.com/ è possibile effettuare la ricerca, oppure selezionare dalle varie categorie o scorrere dall'elenco, per trovare l'icona di proprio interesse.
Il sito è in lingua inglese.

lunedì 25 marzo 2019

Ritagliare video di Youtube

YouTube Cropper Logo

Se volete visualizzare determinati parti di un video, presenti nel portale "Youtube", il seguente sito https://ytcropper.com/ in lingua inglese, permette di generare una parte di un video, partendo dai minuti di inizio e fine.
Molto semplice da utilizzare ed intuitivo.
Non richiede ne email e ne registrazione.

domenica 24 marzo 2019

PostgreSQL ordinare un campo testo, convertendolo numerico - Select Order varchar string as numeric

Nel caso che abbiamo l'esigenza di trasformare un campo string in numerico, ed ordinarlo dovremmo usare l'espressioni regolari.
Supponiamo di avere un campo string, con valori simili a questo "1/2017"  "2/2017", "1/2018", 2"1/2019" etc. e vogliamo ordinarli in base al primo valore e non con il simbolo della barra (/), tramite la funzione regexp verificando solo i numeri.
Qui di seguito un frammento di codice.


select   * from NomeTabella
ORDER BY NULLIF(regexp_replace(NomeCampo, '\D', '', 'g'), '')::int asc

sabato 23 marzo 2019

Sql Server update left join

La seguente istruzione di SQL effettua l'aggiornamento di una colonna di una determinata tabella, prendendo i valori da un'altra tabella.
L'esempio riguarda la possibilità di utilizzare una Left Join nel comando update.

  UPDATE tab1
  set tab1.Colonna = tab2.Colonna
  from
 Tabella1 tab1 left join Tabella2 tab2
  on
  tab1 .ColonnaID = tab2.ColonnaID