Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

[70-526, #6] Carrellata: ToolTip, ProgressBar ed HelpProvider

Oggi pensiamo ad un post dai contenuti leggeri, affrontando l'utilizzo di controlli semplici ed efficaci da poter usare sulle nostre Windows Forms. L'esame 70-526 ci chiede di utilizzare i controlli ToolTip, ProgressBar, HelpProviderErrorProvider. Per quest'ultimo vi rimando, oltre che ai vari links ufficiali Microsoft, al mio stesso post scritto un po' di tempo fa relativamente all'esame 70-316: nel FW2.0 da questo punto di vista non è cambiato nulla, per cui... Per gli altri controlli, continuate a leggere.

Componente ToolTip
Il controllo ToolTip è in realtà un componente, e serve a mostrare per l'appunto un piccolo tooltip sui controlli. Lo si trascina dalla toolbox di VS2005 su una qualsiasi Windows Forms del nostro progetto. Il componente finisce nella tray-area della WF, dove possiamo settarne la proprietà principali. ToolTip implementa l'interfaccia IExtenderProvider (che prevede l'implementazione del solo metodo CanExtend): ciò significa che, banalmente, il ToolTip non fa nulla da solo, ma aggiunge alcune proprietà ai controlli presenti sulla Windows Forms stessa. Nella tray-area definiamo proprietà generiche - come l'aspetto visivo - del componente Tooltip, ma il contenuto vero e proprio viene definito sul controllo che fa uso del tooltip. Vediamo di spiegarci meglio, dando un'occhiata alle proprietà del componente Tooltip; le principali sono:

  1. Active, che attiva o meno la visualizzazione dei tooltip
  2. BackColor e ForeColor, che determinano il colore di sfondo e del testo dei tooltip
  3. IsBalloon, che determina se i tooltip devono apparire come dei ballon
  4. ToolTipIcon, che determina un'eventuale icona
  5. ToolTipTitle serve per indicare un titolo che deve apparire nei tooltip
  6. UseAnimation e UseFading determinano se il tooltip deve apparire con un'animazione e se deve scomparire con un fade out

Dopo aver configurato il ToolTip, proviamo a selezionare un qualsiasi altro dei controlli sulla Windows Forms (Button, TextBox, ListBox e via dicendo). A tutti questi controlli è stata aggiunta una proprietà di tipo stringa, che determina quindi il contenuto effettivo del tooltip per quel specifico controllo che abbiamo selezionato.

Il ToolTip espone l'evento Draw che possiamo gestire con un opportuno event handler per intercettare il disegno del tooltip da parte del framework. L'event handler fa uso della classe DrawToolTipEventArgs, che espone un'istanza di Graphics e Font, per esempio, che possiamo sfruttare per customizzare l'aspetto del ToolTip.

Controllo ProgressBar
Direi che questo controllo non ha bisogno di presentazioni, giusto? :-) Esisteva fin dai tempi di Visual Basic 3, probabilmente, ed inoltre è uno dei controlli che più mi stanno simpatici. La ProgressBar dà un'indicazione visuale dello stato di un'elaborazione più o meno lunga, informando l'utente a che punto siamo e quanto manca alla fine. Non in termini di tempo, è chiaro, ma relativamente parlando. Gran parte dell'interfaccia della ProgressBar è ereditata da Control, ovviamente, ma ne aggiunge qualcuna necessaria: Minimum e Maximum determinano il valore minimo e massimo che la proprietà Value può assumere. In base a questi valori, il controllo si disegna in modo opportuno. Esempio banale: se Minimum = 0, Maximum = 100 e Value = 50, la ProgressBar disegnerà una barra che arriverà fino a metà del controllo. La proprietà Style determina lo stile di questa barra, che può assumere i valori dell'enum ProgressBarStyle (Blocks, Continuous e Marquee).

Come potete ben immaginare, la ProgressBar viene soprattutto usata per notificare all'utente lo stato di un'operazione di lunga durata, per far capire che il vostro applicativo non si è impallato ma sta facendo quello che deve fare. Questo vuol dire utilizzarla quindi in combinazione con thread secondari oppure utilizzando il componente BackgroundWorker, di cui ho già parlato in passato per l'esame 70-536. Esame in cui ho preso un punteggio infimo. Il BackgroundWorker mi è rimasto in testa, al punto che ne ho scritto un articolo su uno dei numeri di IoProgrammo uscito nei mesi scorsi.

Componente HelpProvider
Il componente HelpProvider serve per fornire assistenza all'utente su una Windows Form. Si basa sulla classe Help che incapsula tutto l'engine per gestire help in formato HTML. Come il ToolTip, l'HelpProvider aggiunge un po' di proprietà ai controlli su una Windows Forms. Tali proprietà impostano le modalità di help che l'applicativo fornisce all'utente. Per testarlo velocemente e capirne il funzionamento, seguite i seguenti passi:

  1. Aggiungete una nuova Windows Form al progetto
  2. Trascinate un HelpProvider dalla toolbox di VS2005 sulla WF
  3. Aggiungete una TextBox alla stessa WF
  4. Settate la proprietà HelpString della TextBox (aggiunta dall'HelpProvider) con la stringa: "Eccoti l'aiuto: guarda ed impara!"

Eseguite il progetto. Quando la WF appare, date il focus alla TextBox e premete F1. Il FW2.0 fa apparire un tooltip (graficamente diverso dal classico ToolTip) che mostra la stringa impostata per quel controllo.

Ovviamente, l'HelpProvider può essere sfruttato in modo più raffinato. Non si limita alla visualizzazione di semplici tooltip. La proprietà HelpNamespace ci permette di impostare il file di help da utilizzare, che può essere in formato CHM o HTML. Ad ogni controllo possiamo quindi associare una keyword, che verrà ricercata come topic nel file di help.

Print | posted on Monday, January 15, 2007 11:14 AM | Filed Under [ Esame 70-526 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET