J'ai besoin d'aide avec mon outil.
J'ai essayé de changer couleur code> mon panneau code> avec colorialog code> mais, il ne fonctionne pas em>
Je veux des couleurs de changement tout panneau code> dans mon formulaire code>.
Construction de panneaux: private void button104_Click_1(object sender, EventArgs e)
{
this.bg.FullOpen = true;
if (this.bg.ShowDialog() == DialogResult.OK)
{
this.setBgColor(this.bg.Color);
}
}
public void setBgColor(Color rgb)
{
p.BackColor = rgb;
}
3 Réponses :
Ceci regarde em> comme Winforms. En supposant que ce soit le cas, vous devez itérer sur toutes les commandes sur le formulaire et pour chacun d'un panneau code> code>, définissez sa couleur. Quelque chose comme ça (non testé, vous devrez peut-être avoir besoin de Jouer environ un peu) P> public void setBgColor(Color rgb)
{
foreach (Control c in this.Controls)
{
if (c.GetType() == typeof(System.Windows.Forms.Panel))
{
c.BackColor = rgb;
}
}
}
Pas de problème - si cela a aidé à n'hésiter à accepter la réponse :)
J'ai une dernière question que j'ai aussi un panneau dans le métrotabpage et il ne veut pas changer de couleur
@ Randyretro est si ce n'est pas le même type de contrôle, puis étendez le code pour vérifier contre d'autres types (par exemple, sinon si (c.getType () == typeof (métrocontrols.metropanel)) code> ou similaire. Je «Je ne connais pas avec les contrôles du métro, mais il suffit d'avoir un violon très rapide avec eux et je ne suis pas sûr de savoir comment rendre un métropanel montrent une couleur de fond différente - il ne semble pas changer pour moi si je viens de la définir Dans le concepteur; peut-être que c'est le problème?
Je suggérerais d'adopter la solution d'Olivier Rogier ci-dessus - cela pourrait bien guérir votre problème.
Mon panneau est en métrotabpage1 et mon panneau est un système.Windows.Form
Vous pouvez sélectionner toutes les commandes d'un type particulier à l'aide de la méthode SYSTEM.LINQ CODE> Extension, OFTYPE CODE>, et si vous les ithérez-les dans une boucle, vous pouvez définir Tous leurs Backcolor Code> Propriétés: private void SetBackColorIncludingChildren(Control parent, Color backColor, Type controlType)
{
if (parent.GetType() == controlType)
{
parent.BackColor = backColor;
}
foreach(Control child in parent.Controls)
{
SetBackColorIncludingChildren(child, backColor, controlType);
}
}
private void button1_Click(object sender, EventArgs e)
{
ColorDialog cd = new ColorDialog();
if (cd.ShowDialog() == DialogResult.OK)
{
// Pass 'this' to the method, which represents this 'Form' control
SetBackColorIncludingChildren(this, cd.Color, typeof(Panel));
}
}
Très bien, enseigner à un peu de Linq et de bonnes habitudes tout en répondant à une question!
Vous pouvez utiliser ceci:
private void button1_Click(object sender, EventArgs e)
{
this.bg.FullOpen = true;
if ( this.bg.ShowDialog() == DialogResult.OK )
{
setBgColor(Controls, bg.Color);
}
}
public void setBgColor(Control.ControlCollection controls, Color rgb)
{
foreach ( Control control in controls )
{
if ( control is Panel )
( (Panel)control ).BackColor = rgb;
setBgColor(control.Controls, rgb);
}
}
Pourquoi pourriez-vous analyser tous les contrôles s'il a déjà la référence, tout va bien ...
Pour changer le backcolor de tous les panneaux sous la forme, y compris les panneaux dans les panneaux, etc., ou je n'ai pas compris la question.
Pullouché comme j'avais oublié de prendre en compte les commandes imbriquées et que tous les contrôles étaient disponibles dans le tableau Code> sur le formulaire lui-même. (Dans ma défense, pas fait Winforms depuis plusieurs années maintenant)
WPF, Win Forms, Xamarin, autre chose?
@ RANDYRETRO's Vous ne postez pas de captures d'écran pour votre code, nous avons un codeBlocks pour cela, veuillez les utiliser.
@ Randyretro est la bienvenue dans le débordement de la pile. S'il vous plaît ne postez pas d'écran du code. Vous pouvez modifier votre question et y ajouter plus de texte. Ce site gère très bien le code source, et il est beaucoup plus facile de lire tout le monde ou de copier s'ils veulent le tester pour eux-mêmes afin qu'ils puissent vous aider.
@Edplunkett j'étais plus rapide;)
Désolé, je suis nouveau sur ce site x) Comment puis-je changer tous les backcolor de tout mon panneau dans mon formulaire, j'utilise Colordialog Ça fonctionne si j'ajoute "Panel1" ou "Panel2", mais je veux changer tout panneau, il ne fonctionne pas: /
Bien que cela ressemble à des formulaires Windows à cause du
eventargs e code>, toujours, répondez à la question du premier commentaire ...Le look de Randyretro Si vous n'avez pas défini explicitement le backcolor d'un contrôle / conteneur, il adoptera la backcolor du parent IST ou la couleur par défaut s'il n'en a pas, donc si vous souhaitez modifier tous les backcolors, il devrait suffire de changer le backcolor de la Conteneur ultérieur. De plus, à mon avis, vous devriez commencer à s'habituer à WPF car il s'agit de la seule option si vous voulez aller proffavessionnelle, pour certains formulaires d'outils Smackhead, mais il a de nombreuses limitations.
@ Renécarannante "Comme il s'agit de la seule option si vous voulez aller proffessionnel, certains formulaires d'outils Smackhead sont corrects", sauf environ 90% du code hérité que vous êtes obligé de maintenir dans votre nouvel emploi est écrit dans WinForms;) Je me demande Combien de développeurs professionnels ont la liberté de développer uniquement des applications nouvelles b> ou de réécrire au WPF sans avoir à maintenir le code hérité dans Winforms.
@ Renécarannante Je me sens avec toi ", de ne pas commencer leur transporteur avec un environnement hérité." Je dis simplement que parfois, vous ne pouvez tout simplement pas choisir ce qu'est l'héritage vous attend, et cela aide à être préparé;)
@ Mongzhu est vrai que, mais si vous voulez créer le meilleur choix, choisissez quelque chose de nouveau, qu'il essaie de faire. Je peux coder un peu de C ++ et assez bon C # Que travaillez-je? FoxPro, vous ne pouvez certainement pas choisir quoi travailler. Mais dans votre temps libre, vous pouvez vous amuser.
Même les systèmes hérités vont à un moment donné à un moment donné à l'environnement le plus récent et vous pouvez vous rapporter de la bonne réputation et d'autres € si vous avez déjà le savoir-faire.