[[lang:csharp:ihm:form:bugs|Bugs]] [[lang:csharp:ihm:form:touches|Gestion des touches]] [[lang:csharp:ihm:form:textbox|TextBox]] [[lang:csharp:ihm:form:tablelayoutpanel|TableLayoutPanel]] [[lang:csharp:ihm:form:form|Form]] [[lang:csharp:ihm:form:propertygrid|PropertyGrid]] [[lang:csharp:ihm:form:datagridview|DataGridView]] [[lang:csharp:ihm:form:progressbar|ProgressBar]] [[lang:csharp:ihm:form:tooltip|ToolTip]] =====Récupérer tous les enfants en fonction de leur type===== ====Juste les enfants directs==== foreach (var pictureBox in GetControlsOfType(theForm)) { } ====Tous les enfants et les sous-enfants==== public static IEnumerable GetControlsOfType(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(c)) yield return i; } [[https://stackoverflow.com/questions/4630391/get-all-controls-of-a-specific-type|c# - Get all controls of a specific type - Stack Overflow]] {{ :lang:csharp:ihm:form:c_-_get_all_controls_of_a_specific_type_-_stack_overflow_2020-04-27_8_06_13_am_.html |Archive du 07/01/2011 le 27/04/2020}} =====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". [[https://stackoverflow.com/questions/19910172/how-to-make-picturebox-transparent|c# - How to make picturebox transparent_ - Stack Overflow]] {{ :lang:csharp:ihm:form:c_-_how_to_make_picturebox_transparent_-_stack_overflow_2020-04-27_8_06_32_am_.html |Archive du 11/11/2013 le 27/04/2020}} =====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; } } Cettte méthode réduit les scintillements pour les ''UserControl'' mais peut entraîner d'autres scintillements à la place. A utiliser avec précaution. [[https://stackoverflow.com/questions/2612487/how-to-fix-the-flickering-in-user-controls|c# - How to fix the flickering in User controls - Stack Overflow]] {{ :lang:csharp:ihm:form:c_-_how_to_fix_the_flickering_in_user_controls_-_stack_overflow_2020-04-27_8_06_50_am_.html |Archive du 10/04/2010 le 27/04/2020}} =====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(); } [[https://stackoverflow.com/questions/1600664/how-can-i-scroll-my-panel-using-my-mousewheel|c# - How can I scroll my panel using my mousewheel_ - Stack Overflow]] {{ :lang:csharp:ihm:form:c_-_how_can_i_scroll_my_panel_using_my_mousewheel_-_stack_overflow_2020-04-27_8_07_02_am_.html |Archive du 21/10/2009 le 27/04/2020}}