• 0

[C#] Loop through textboxes


Question

Basically I want to go from this

textBox1.Text = array[0];

textBox2.Text = array[1];

textBox3.Text = array[2];

textBox4.Text = array[3];

textBox5.Text = array[4];

textBox6.Text = array[5];

to this

For(int i=0; i<6; i++)

{

textBox[i+1].Text = array;

}

If this is some how possible, please share your knowledge :)

Link to comment
https://www.neowin.net/forum/topic/478252-c-loop-through-textboxes/
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Your text boxes must also be in an array.

I am new to C# myself so some of this may be a bit innaccurate.

---------

In VB6 you could create an array of controls at design time. As of yet I havent found a way to do this in C# at design time. So here is a quick solution I had in mind. Add a textbox to your design, take a look at the code Visual Studio generates. Copy and paste that code into a function, slightly modified, so that you could generate your array of controls at runtime.

---------

Make sense? I hope so.

  • 0

I would say something like this:

string[] values = new string[]{"Text1", "Text2", "Text3"};
TextBox textBox;

for (int i = 0; i &lt; values.Length; i++) {
   textBox = (TextBox) this.Controls["TextBox" + i];
   textBox.Text = values[i];
}

You can use the Controls' indexer of your Form to get a control by Name.

The this keyword isn't really necessary, I put it there so that you see that I'm referring to the Form.

-----

Another way is to store the TextBoxes in an Array in advance.

string[] values = new string[]{"Text1", "Text2", "Text3"};
TextBox[] textBoxes = new TextBox[] { TextBox1, TextBox2, TextBox3 }

for (int i = 0; i &lt; values.Length; i++)
   textBoxes[i] = values[i];

Good luck!

Edited by Zyphrax
  • 0

Well what's the point of re-storing it all inside an array if you have the textboxes on your forms, traverse through your Controls collection on your form.

The following code will iteratate through your forms control collection and pick out the textbox's and then assign the text to be an integer:

			int value = 1;
			foreach(Control control in this.Controls)
			{
				if(control.GetType() == typeof(TextBox))
				{
					TextBox textbox = (TextBox)control;
					textbox.Text = value++;
				}
			}

Hope this helps.

Edited by Winston
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.