Version imprimable       Envoyer     
Cliquez pour évaluer et commenter
MSDN
MSDN Library
Écriture du code de l'onglet Paramètres

Le composant additionnel à Windows Home Server que vous créez dans ce didacticiel contient un onglet Paramètres. Créez un onglet Paramètres lorsque vous souhaitez proposer à vos utilisateurs le réglage d'options dans votre application.

Sur l'onglet Console que vous avez créé à la page Écriture du code de l'onglet Console, vous avez placé un bouton qui ouvre la boîte de dialogue Paramètres Windows Home Server sur un onglet spécifique. Cette section explique comment créer cet onglet Paramètres spécifique.

Écrire le code de l'onglet Paramètres

Pour ajouter le fichier de la classe onglet Paramètres à votre projet

Avant de commencer à écrire le code de l'onglet Paramètres, vous avez besoin d'ajouter un fichier classe à votre projet. Créez la classe de l'onglet Paramètres dans le même projet Visual Studio que vous avez créé à la page Création d'un complément.

Ajoutez un fichier classe à votre projet d'onglet Console. Puis ajoutez votre code pour l'onglet Paramètres avec les mêmes directives using et dans le même espace de noms que vous avez utilisés pour votre onglet Console.

Pour ajouter un nouveau fichier classe
  1. Le projet SDKSample étant ouvert dans Visual Studio 2005, cliquez droit dans l'Explorateur de solution, cliquez droit sur SDKSample, pointez sur Ajouter, puis cliquez sur Classe.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, remplacez le nom par défaut, Class1.cs, par SampleSettings.cs.

  3. Cliquez sur Ajouter.

  4. Au début de SampleSettings.cs, ajoutez les directives suivantes :

                        
    using System.Drawing;
    using System.Windows.Forms;
    using Microsoft.HomeServer.Extensibility;

Étape 1. Implémentez l'interface ISettingsTab

Pour créer un onglet Paramètres dans la console Windows Home Server, implémentez l'interface ISettingsTab. Cette interface est virtuellement identique à celle que vous avez implémentée lors de la création de l'onglet Console, IConsoleTab. En fait, l'interface ISettingsTab implémente l'interface IConsoleTab. Elle contient donc les mêmes méthodes et les mêmes propriétés, avec juste un ajout, la méthode Commit.

Tout d'abord, vérifiez que l'espace de noms déclaré est correct. Puisque vous avez précédemment utilisé dans ce projet l'espace de noms par défaut, l'espace de noms suivant a dû apparaître dans le fichier SampleSettings.cs lorsque vous l'avez créé :

namespace Microsoft.HomeServer.HomeServerConsoleTab.SDKSample

Important
Vous devez utiliser l'espace de noms Microsoft.HomeServer.HomeServerConsoleTab.VotreNomOnglet (où VotreNomOnglet est le nom de votre onglet personnalisé), sinon votre onglet Paramètres ne fonctionnera pas.

Dans un deuxième temps, déclarez une classe qui implémente l'interface ISettingsTab. Remplacez le nom de la classe par défaut SampleSettings par HomeServerSettingsExtender, comme le montre l'extrait de code suivant :

                
public class HomeServerSettingsExtender : Microsoft.HomeServer.Extensibility.ISettingsTab  
Important
Remarquez que le nom de la classe est HomeServerSettingsExtender. Vous devez nommer votre classe avec ce nom afin que votre code fonctionne. En effet, HomeServerConsole.exe recherche dans votre fichier dll une classe de ce nom lorsqu'il tente de charger votre onglet Paramètres. S'il ne trouve pas cette classe, votre onglet Paramètres n'est pas chargé.

Étape 2. Créez un contrôle qui s'affichera sur le volet de la page Paramètres Windows Home Server

Le volet de la boîte de dialogue Paramètres Windows Home Server vous permet d'afficher un objet de type contrôle. Comme le contrôle de l'onglet Console, le contrôle de l'onglet Paramètres peut lui-même contenir d'autres contrôles. Lorsque la boîte de dialogue Paramètres Windows Home Server est ouverte, elle affiche tous les onglets Paramètres sur le côté gauche. Lorsqu'un onglet particulier est cliqué, le volet droit change et affiche le contrôle associé à cet onglet. Il peut s'agir de n'importe quel contrôle de votre choix. Il est référencé par la propriété TabControl de l'onglet Paramètres. Si vous souhaitez qu'un contrôle apparaisse dans le volet de la boîte de dialogue Paramètres Windows Home Server, vous devez coder la propriété TabControl afin qu'elle renvoie une référence à ce contrôle.

Dans le cadre de ce tutoriel, créez un contrôle très simple de type RichTextbox, et nommez-le SampleControl. Il apparaîtra dans le volet de la boîte de dialogue Paramètres Windows Home Server lorsque l'utilisateur cliquera sur l'onglet Paramètres. Placez le code pour cette classe dans SampleSettings.cs, immédiatement après la déclaration de l'espace de noms :

                
namespace Microsoft.HomeServer.HomeServerConsoleTab.SDKSample
{
internal class SampleControl : RichTextBox
    {
        public SampleControl(int width, int height)
        {
            RichTextBox rtDisplay = new RichTextBox();
            rtDisplay.BorderStyle = BorderStyle.FixedSingle;
            rtDisplay.SetBounds(0, 0, width, height);
            rtDisplay.Multiline = true;
            rtDisplay.ReadOnly = true;
            rtDisplay.Text = "SDK Sample Settings.";
            rtDisplay.Parent = this;
        }
    }

Dans cet extrait de code, SampleControl est défini dans le fichier SampleSettings.cs dans le même espace de noms que la classe HomeServerSettingsExtender. SampleControl hérite du contrôle RichTextBox, et il a le modificateur d'accès internal. Il ne peut donc être accédé que par le code situé dans le même assembly, par exemple le code du fichier HomeServerExtender.cs. Ce fichier contient le code d'exemple de l'onglet Console. Notez que les dimensions du contrôle SampleControl sont déterminées par les paramètres hauteur et largeur qui sont passés lors de l'appel au constructeur.

Lorsque vous cliquez sur l'onglet Paramètres dans la boîte de dialogue Paramètres Windows Home Server, SampleControl apparaît dans le volet droit comme une zone de texte en lecture seule. Il affiche "SDK Sample Settings".

Étape 3. Écrivez le code des champs et du constructeur HomeServerSettingsExtender de la classe

Maintenant que vous avez défini la classe Control personnalisée pour l'objet qui apparaît dans le volet de la boîte de dialogue Paramètres Windows Home Server, vous pouvez écrire le code pour les champs et le constructeur de votre onglet Paramètres :

                
public class HomeServerSettingsExtender : Microsoft.HomeServer.Extensibility.ISettingsTab
{
  private SampleControl tabControl;
  private IConsoleServices services;
  public HomeServerSettingsExtender(int width, int height, IConsoleServices consoleServices)
  {
    tabControl = new SampleControl(width, height);
    this.services = consoleServices;
  }
}

Tout d'abord, remarquez le champ privé qui fait référence à une instance privée du contrôle personnalisé, SampleControl :

                
private SampleControl tabControl;

Deuxièmement, notez que le constructeur pour HomeServerSettingsExtender contient trois paramètres : deux paramètres entiers, width et height, et un objet Microsoft.HomeServer.Extensibility.IConsoleServices,

                
public HomeServerSettingsExtender(int width, int height, IConsoleServices consoleServices).

Lorsque HomeServerConsole.exe appelle le constructeur pour HomeServerSettingsExtender, il passe les valeurs de width et height, et les arguments pour IConsoleServices.

Troisièmement, utilisez les valeurs height et width qui sont passées par arguments lors de l'appel au constructeur, pour initialiser l'instance privée de SampleControl :

                
public HomeServerSettingsExtender(int width, int height, IConsoleServices consoleServices)
{
  tabControl = new SampleControl(width, height);
  this.services = consoleServices;
}

Par défaut, les valeurs pour width et height que HomeServerConsole.exe passe lors de l'appel au constructeur HomeServerSettingsExtender, définissent une zone qui recouvre entièrement le volet de la boîte de dialogue Paramètres Windows Home Server. Dans le constructeur HomeServerSettingsExtender, ces mêmes valeurs sont passées au constructeur pour tabControl. Par conséquent, lorsque tabControl s'affiche, il occupe toute la place disponible.

Important
HomeServerConsole.exe appelle toujours le constructeur pour la classe HomeServerSettingsExtender en utilisant les valeurs 390 pour width et 410 pour height. Si vous créez un contrôle avec des dimensions supérieures, il sera rogné.

Étape 4. Implémentez la propriété TabText

Lorsque votre onglet Paramètres apparaît dans la boîte de dialogue Paramètres Windows Home Server, il devrait être accompagné d'une brève description qui aiderait les utilisateurs à comprendre de quoi il s'agit. Écrivez ce texte dans la propriété TabText. Dans le cadre de ce didacticiel, écrivez simplement "SDK Sample" comme dans cet extrait de code :

                
public string TabText { get { return "SDK Sample"; } }

Étape 5. Mettez en œuvre TabImage

L'interface ISettingsTab implémente la propriété TabImage de l'interface IConsoleTab. TabImage renvoie un bitmap qui apparaît sur l'onglet Paramètres, à côté du TabText.

Important
La taille de l'image bitmap doit être de 32 x 32 pixels. Une image d'une taille différente ne s'affichera pas correctement.

L'extrait de code suivant référence le fichier de l'image SDKSampleImg, qui a été ajouté en tant que ressource au projet SDKSample à la page Création d'un complément :

                
public Bitmap TabImage 
  {
    get 
      {
        return Properties.Resources.SDKSampleImg;
       } 
  } 

Étape 6. Implémentez la propriété TabControl

Avec le contrôle personnalisé tabControl, que vous avez défini et initialisé à l'étape 3 ci-dessus, codez la propriété TabControl de la classe HomeServerSettingsExtender de telle sorte qu'elle renvoie une référence à tabControl :

                
public Control TabControl { get { return tabControl; } }
Important
Utilisez la même approche que celle décrite ici : la propriété TabControl renvoie une référence au même objet Control que vous avez créé et initialisé dans le constructeur de votre onglet Paramètres. Si vous implémentez la propriété TabControl de telle sorte qu'elle crée et renvoie un nouvel objet Control à chaque appel, cela provoquera des résultats indésirables.

Étape 7. Implémentez la méthode GetHelp()

Vous pouvez utiliser GetHelp pour afficher une aide lorsque l'utilisateur sélectionne votre onglet et appuie sur une touche d'aide (Aide dans la boîte de dialogue Paramètres Windows Home Server ou F1). Bien que vous deviez implémenter la méthode GetHelp dans l'interface IConsoleTab, il n'est pas nécessaire que vous fournissiez votre propre aide. Si vous ne founissez pas de contenu, l'aide par défaut apparaîtra quand l'utilisateur appuiera sur une touche d'aide.

La signature de la méthode GetHelp vous demande de retourner une valeur booléenne qui indique si vous souhaitez ou non afficher votre propre contenu d'aide. Une valeur de retour à true indique que vous souhaitez afficher votre propre contenu d'aide.

Dans le contexte de ce didacticiel, ne fournissez pas votre propre contenu donc codez GetHelp pour qu'il renvoie false :

                
public bool GetHelp()
  {
    return false;
  }

Étape 8. Implémentez la propriété SettingsGuid

L'implémentation de la propriété SettingsGuid constitue une étape importante. Lorsqu'elle est implémentée en tant que propriété pour un onglet Paramètres, SettingsGuid est utilisée différemment par rapport à son implémentation dans un onglet Console.

En tant que propriété sur un onglet Paramètres, SettingsGuid vous donne le moyen d'appeler votre onglet Paramètres à partir de votre application ou de l'associer à un onglet Console. Dans l'exemple de l'onglet Console que vous avez créé précédemment dans ce didacticiel, vous avez placé un bouton qui appelle l'onglet Paramètres (en référençant le GUID de l'onglet Paramètres) lorsqu'il est cliqué :

                
internal void BtnOpenSettings_Click(object sender, EventArgs e)
  {
    this.services.OpenSettings(new Guid("{A99FEB96-A120-44af-9972-3CB942F521A0}"));

  }

Pour que l'onglet Paramètres apparaisse lorsque l'utilisateur clique sur le bouton Afficher les paramètres de l'onglet Console, la propriété SettingsGuid doit utiliser le même GUID que celui utilisé dans le code d'appel de la méthode BtnOpenSettings_Click :

                
public Guid SettingsGuid { get { return new Guid("{A99FEB96-A120-44af-9972-3CB942F521A0}"); } }

Étape 9. Implémentez la méthode Commit()

La méthode Commit permet de valider des modifications apportées à des objets principaux. Lorsque l'utilisateur clique sur OK ou sur Appliquer dans la boîte de dialogue Paramètres Windows Home Server, les modifications sont confirmées. Par exemple, si vous activez le partage d'une bibliothèque de médias pour un dossier partagé dans Dossiers partagés de la boîte de dialogue Windows Home Server et si vous cliquez sur OK, la modification est apportée à ce dossier et le dossier est marqué comme dossier de partage d'une bibliothèque de médias.

Important
Le fait de cliquer sur OK ou sur Appliquer confirme les modifications effectuées sur tous les onglets de la boîte de dialogue. Par exemple, si l'utilisateur change des paramètres dans les onglets Paramètres généraux, Comptes des utilisateurs ou Dossiers partagés, puis dans votre onglet personnalisé, un clic sur OK ou sur Appliquer confirme toutes ces modifications en une fois, pas uniquement celles du dernier onglet visité.

Si vous codez la méthode Commit de telle sorte qu'elle renvoie true, vous signalez au code appelant que toutes les modifications ont été validées et confirmées auprès des objets principaux. Dans le cadre de ce didacticiel, vous n'autorisez pas les utilisateurs à modifier les paramètres de votre application. Par conséquent, aucune confirmation de modification n'est nécessaire. Codez la méthode Commit de telle sorte qu'elle renvoie false.

                
public bool Commit ()
  { 
     return false;
  }

Résumé

Vous venez de mettre en place un onglet Paramètres Windows Home Server. Continuez ce didacticiel afin de terminer votre exemple de complément.

Voir aussi

© 2009 Microsoft Corporation. Tous droits réservés. Conditions d'utilisation | Marques | Confidentialité
Page view tracker