I believe the proper term is recursively. I have a Windows Form, and inside that I have a Tab Control, and inside the Tab Control are four Tabs, and inside each tab are multiple controls – Buttons, text boxes, etc. I want to change the cursor of every button to a type hand.
Below is where I have gotten so far with this inquiry:
foreach (Control c in tabControl1.Controls)
{
// The only controls that will be found here are the tabs themselves. So, now I must run a *foreach* loop through every tab found, and look if buttons are present.
}
The commented area explains my issue to some extent. I have found an example of a recurisively finding a control on a form but I am not sure why I would need to pass the contro’s name as an argument as I am trying to find Every control of type button.
Here is the code that I found online:
http://www.dreamincode.net/code/snippet1663.htm
Thank you once again. I love hearing from all of you as it’s an excellent learning experience for me.
Thank you very much for your time.
I believe this will work. When you call it the first time, you’d pass in the form. The form isn’t a button, but it will have children. Each child it has will be passed into FindAll(). If that control is a button, it will call doStuff() (you can set the cursor in there). Likewise if that control has any children, they’ll be passed in.
You are correct, the term is recurisve (generally speaking, any function or sub that calls itself). So, in this example FindAll() will call FindAll() in a certain case.
Also, this is just sample code; you may want to check for null references depending on the nature of your application.
EDIT: Just as an FYI if you aren’t familiar with recursion, it’s pretty easy to get the dreaded StackOverflow exception. When you end up in a never-ending loop of calling yourself, you’ll run out of stackspace and see the StackOverflow exception. Hence, the name http://www.StackOverflow.com
In this case, we don’t have to worry because .NET prevents us from adding controls that create a circular reference. For example – this code will fail:
I don’t know if any of this makes sense, but hopefully it helps. Recursion is generally considered one of the ‘harder’ concepts to grasp for a lot of people. Then again, I’m not very good at explaining things.