in

didierdanse.net

Site personnel de Didier Danse
Didier Danse's Personnal Website
Microsoft Most Valuable Professional SharePoint

This Blog

Syndication

didierdanse.net - Les news Developpement

March 2008 - Posts

  • Méthode WinForms se rapprochant du FindControl d'asp.NET

    (republication d'un post paru sur mon ancien blog)

    En asp.NET, vu que tous les composants ont un nom distinct, l'utilisation de FindControl est simple à implémenter.

    En Winforms, il n'y rien de tel. Effectivement, les Winforms gardent les noms que l'on stipule sans aucune modification.

    La méthode suivante renvoie une référence au contrôle si il existe sans quoi elle renvoie null. Attention que si deux contrôles portent le même nom cette fonction renverra le premier contrôle rencontré et qui porte ce nom.

    static public Control FindControl(Control baseControl, string name)
    { 
        name = name.Trim().ToLower(); 
        Control cInner = null; 
        foreach (Control c in baseControl.Controls) 
        { 
            if (c.Name.Trim().ToLower() == name) 
                return c; 
            if (c.Controls.Count > 0) 
            { 
                cInner = FindControl(c, name); 
                if (cInner != null) 
                    return cInner; 
            } 
        } 
        return null; 
    }
    
    .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }
    Posted Mar 07 2008, 03:09 PM by Didier Danse with no comments
    Filed under:
  • Debugger un composant lorsque l'on effectue un drag and drop de celui-ci dans Visual Studio

    (republication d'un post paru sur mon ancien blog)

    Combien de fois n'ai-je pas eu besoin de debugger un composant qui "disparaissait" lorsque j'effectue un drag and drop dans Visual Studio. Certes la dernière astuce (Comment éviter des erreurs lors de l'affichage en mode design dans Visual Studio? DesignMode vs LicenseManager.UsageMode) permet d'éviter d'en arriver là mais avant cela, il faut parfois debugger et voir ce qu'il se passe afin de mieux comprendre le pourquoi cela arrive.

    Pour cela, il faut ouvrir deux Visual Studio avec votre solution. Dans le premier, il faut aller dans le menu Debug puis Processes. Ensuite sélectionner devenv.exe qui est le deuxième Visual Studio. Sélectionneé vos points d'arrêt.

    Dans le second visual studio, effectuez le drag and drop. Vous vous retrouverez dès lors sur le point d'arrêt et debuggez comme vous en avez l'habitude.

  • Comment éviter des erreurs lors de l'affichage en mode design dans Visual Studio? DesignMode vs LicenseManager.UsageMode

    (republication d'un post sur mon ancien blog)

    Dans les différentes documentations, il est indiqué que pour éviter d'effectuer des actions comme des accès à une base de données ou d'autres actions reposant sur des actions particulières, des listes, ... soit tout ce qui ne concerne pas un simple affichage, il faut utiliser la propriété DesignMode

    if (this.designMode) 
      return; 
    // actions
    .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

    Ceci fonctionne effectivement très bien tant que vous n'imbriquez pas des users controls l'un dans l'autre.

    Effectivement, pour le contrôle imbriqué, la propriété "DesignMode" est à false que vous soyez à l'exécution en en train de faire du drag and drop dans votre designer.

    Il existe une autre propriété très utile que nous pouvons utiliser de la même manière. Il s'agit de "LicenseManager.UsageMode". Lorsque sa valeur est à LicenseManagerUsage.DesignMode, c'est que nous sommes dans un designer, il ne faut dès lors pas effectuer des actions nécessitant des accès à une base de données etc

    if ( LicenseManager.UsageMode == LicenseUsageMode.Designtime ) 
      return; 
    // actions
    
    .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }
More Posts
L'auteur du site ne peut être tenu responsable des dommages que les informations fournies pourraient entraîner. Tout est cependant mis en oeuvre pour éviter tout désagrément.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems