Solved

Dynamic Buttons in c#

Posted on 2009-05-05
5
294 Views
Last Modified: 2012-05-06
Hello,

i need to change the background color of all my button.
Let say they are named button1, button2, etc.

I want to change the color in s for loop.
I attach a saple code to better explain.

Thank you very much
for (int n = 1; n < 60); n++)

            {

                

                button+n.BackColor = Color.Yellow;

                //obviussly is not working like that :)

            }

Open in new window

0
Comment
Question by:borntofly
5 Comments
 
LVL 12

Accepted Solution

by:
wht1986 earned 250 total points
ID: 24308870
to find a control by name you can

in asp.net you can use
Page.FindControl("Button" + i.ToString())

on a windows form
Controls["Button" + i.ToString()]
0
 

Author Closing Comment

by:borntofly
ID: 31578207
Thank you very much
0
 
LVL 9

Expert Comment

by:tculler
ID: 24309199
The above will only work if you set the Name property to the control. What I recommend is using a List of buttons instead. Each time you add a button to the form, add it to the Button List as well. For example:
System.Collections.Generic.List<System.Windows.Forms.Button> buttons

   = new System.Collections.Generic.List<System.Windows.Forms.Button>();
 

void AddButton(System.Windows.Forms.Button myButton)

{

     this.buttons.Add(myButton);

     this.Controls.Add(myButton);

}
 

void ChangeButtonsBackColors(System.Drawing.Color myColor)

{

     foreach(System.Windows.Forms.Button btn in this.buttons)

     {

          btn.BackColor = myColor;

     }

}

Open in new window

0
 
LVL 29

Expert Comment

by:anarki_jimbel
ID: 24309229
If you work with winforms.

The catchup here is that e.g. form.Controls[name] will return only controls that are on the form itself. If these buttons (or whatever) are placed on a panel or tabcontrol (or any other container) - they are not in this collection. You need some recursive function to get all buttons on a form if the form has nested container controls with buttons.

Another approach - create an array that references all the buttons, and iterate through the array:

Buitton[] buttons = {Button1, Button2,...}

foreach(Button b in buttons)
            {    
                b.BackColor = Color.Yellow;
            }
0
 
LVL 2

Expert Comment

by:SimonFerris
ID: 24309260
To get each button on a form

foreach (var control in Controls)
            {
                if (typeof(Button) == control.GetType())
                {
                    ((Button)control).BackColor = Color.Yellow;
                }
            }
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now