Outils pour utilisateurs

Outils du site


lang:csharp:ihm:form

Ceci est une ancienne révision du document !


Bugs

Gestion des touches

TextBox

TableLayoutPanel

Form

PropertyGrid

Récupérer tous les enfants en fonction de leur type

Juste les enfants directs

foreach (var pictureBox in GetControlsOfType<PictureBox>(theForm)) {
}

Tous les enfants et les sous-enfants

public static IEnumerable<T> GetControlsOfType<T>(Control root)
    where T : Control
{
    var t = root as T;
    if (t != null)
        yield return t;
 
    var container = root as ContainerControl;
    if (container != null)
        foreach (Control c in container.Controls)
            foreach (var i in GetControlsOfType<T>(c))
                yield return i;
}

Source, Archive

Ajout d'un composant

dest.Controls.Add(composant)

Mais il ne faut pas oublier d'attribuer le parent à composant, ce qui n'est pas fait automatiquement :

composant.Parent = dest;

Avoir deux (ou plus) PictureBox transparentes se recouvrant

Il faut instaurer une relation de parents / enfants entre les images.

Pour que deux images soient transparentes, l'une doit avoir l'autre en tant que parent. Cette approche n'est pas possible depuis l'IDE Visual Studio (testé avec 2015). Il est donc nécessaire de le faire par programmation : Image2.Controls.Add(Image1);. Il n'est pas nécessaire d'enlever le composant Image1 à son parent.

Pour que trois images soient transparentes, il faut un composant enfant, un composant parent et un composant “grand-parent”.

Source, Archive

Réduire le scintillement des UserControl d'une fenêtre

Mettre dans le formulaire (et pas dans les UserControl) :

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
        return cp;
    }
}

<note important>Cettte méthode réduit les scintillements pour les UserControl mais peut entraîner d'autres scintillements à la place. A utiliser avec précausion.</note>

Source, Archive

Permettre à un Panel de faire défiler l'ascenseur avec la molette

Le panel doit avoir le focus.

private void panel1_MouseEnter(object sender, EventArgs e)
{
    panel1.Focus();
}

Source, Archive

lang/csharp/ihm/form.1483707664.txt.gz · Dernière modification : 2017/01/06 14:01 de root