Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 396
  • Last Modified:

Referencing Variable in For Loop

I am almost 100% sure this is possible but I can't seem to get it to work.

I have a for loop and I am trying to use the Loop iterator to reference the value in a text box.

I have 5 text boxes that I want to grab the text out of the box when the for loop increments.  i tried it with brackets around the variable but I get and error stating 'txtUnit1Tag' does not exist in the current context.  How can I reference the text box txtUnit1Tag1 using i ?


for(int i=1; i<5; i++)
{
   value = txtUnit1Tag[i].Text;              
}

Open in new window

0
rkneal
Asked:
rkneal
2 Solutions
 
jppintoCommented:
Please try this...
for(int i=1; i<5; i++)
{
   value = FindControl("txtUnit1Tag" & i, Me).Text;              
}

Open in new window

0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
WebForms or WinForms?
0
 
rknealAuthor Commented:
Windows Forms
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
rknealAuthor Commented:
jppinto - When i try that I get the name 'FindControl' doe snot exist in the current context, followed by Operator & cannot be applied to operands of type 'string and 'int'.
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
For WinForms, try something like:
private void button1_Click(object sender, EventArgs e)
        {
            Control[] ctls;
            for (int i = 1; i < 5; i++)
            {
                ctls = this.Controls.Find("txtUnit1Tag" + i.ToString(), true);
                if (ctls.Length > 0 && ctls[0] is TextBox)
                {
                    TextBox tb = (TextBox)ctls[0];
                    MessageBox.Show(tb.Text, tb.Name, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

Open in new window

0
 
shadow77Commented:
If you have a form named MainForm with five TextBoxes named textBox1 thru textBox5, this code will do what you want.

To create MainForm_Load, use the Properties window in the Forms Designer to add an event handler for Load (you can't just add the method; you need the triggering mechanism).  MainForm_Load may contain other code as well; this is just what you need to add.

Note that you cannot simply initialize the txtUnit[] array because the TextBoxes don't exist until after InitializeComponent() has been executed (you could also just put this code right after the call to InitializeComponent()).

You really only need the first seven lines.  Test39 just illustrates how to reference your TextBoxes.
TextBox[] txtUnit = new TextBox[5];       // an array that allows indexed access to a group of TextBoxes

    private void MainForm_Load(object sender, EventArgs e)
    {
        TextBox[] _txtUnit = { textBox1, textBox2, textBox3, textBox4, textBox5 };
        txtUnit = _txtUnit;
    }

    private void test39()
    {
        for (int i = 0; i < txtUnit.Length; ++i)
            txtUnit[i].Text = (i * i).ToString();
    }

Open in new window

0
 
rknealAuthor Commented:
Used a combination of both your suggestions to accomplish my end result.  Thanks for your assistance.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now