foreach (var pictureBox in GetControlsOfType<PictureBox>(theForm)) { }
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; }
c# - Get all controls of a specific type - Stack Overflow Archive du 07/01/2011 le 27/04/2020
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;
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”.
c# - How to make picturebox transparent_ - Stack Overflow Archive du 11/11/2013 le 27/04/2020
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; } }
Cettte méthode réduit les scintillements pour les UserControl
mais peut entraîner d'autres scintillements à la place. A utiliser avec précaution.
c# - How to fix the flickering in User controls - Stack Overflow Archive du 10/04/2010 le 27/04/2020
Le panel doit avoir le focus.
private void panel1_MouseEnter(object sender, EventArgs e) { panel1.Focus(); }
c# - How can I scroll my panel using my mousewheel_ - Stack Overflow Archive du 21/10/2009 le 27/04/2020