user2552211
user2552211

Reputation: 143

String to Textbox

I have created a method that allows me to find the next empty Box:

public int CheckBox(int boxNum) {
        int BoxNumber = 0;

        TextBox[] itemBoxArray = new TextBox[] { itemBox0, itemBox1, itemBox2, itemBox3, itemBox4, itemBox5, itemBox6, itemBox7,
            itemBox8, itemBox9,itemBox10,itemBox11,itemBox12,itemBox13,itemBox14,itemBox15,};
        for (int i = 0; i < itemBoxArray.Length; i++)
        {
            if (String.IsNullOrEmpty(itemBoxArray[i].Text))
            {
                BoxNumber = i;
                i = 15;                    
            }
        }
        return BoxNumber;
    }

Next i created a button to check what the empty box is and i would like to input something into this box but i cannot find a way ro convert the string that carries the empty box number to that text box:

    private void StandAroundRebar_Click(object sender, EventArgs e)
    {
        int emptybox = CheckBox(0);
        string emptyboxString = emptybox.ToString();

        string newbox = "itemBox" + emptyboxString;

        MessageBox.Show("TextBox # " + newbox + " is empty ");

        var textbox = this.Controls.Find(newbox, true); 
    }
}

}

Upvotes: 0

Views: 114

Answers (4)

itsme86
itsme86

Reputation: 19526

Why not just return the TextBox object directly?

public TextBox GetNextEmptyTextBox()
{
    return (new[] { textBox1, textBox2, textBox3 })
        .FirstOrDefault(tb => string.IsNullOrEmpty(tb.Text));
}

Upvotes: 1

Dominic B.
Dominic B.

Reputation: 1907

You need this function: http://msdn.microsoft.com/de-de/library/486wc64h(v=vs.110).aspx

This will find it, all you have to do is casting it. Then:

BoxNumber = i;
i = 15;  

What should that do? You set the i to the box number and then you set it again to 15?! That isn't supposed to work.

Upvotes: 1

Rapha&#235;l Althaus
Rapha&#235;l Althaus

Reputation: 60503

Well, I would rather change the CheckBox method

public TextBox CheckBox() {   
        var itemBoxArray = new TextBox[] { itemBox0, itemBox1, itemBox2, itemBox3, itemBox4, itemBox5, itemBox6, itemBox7,
            itemBox8, itemBox9,itemBox10,itemBox11,itemBox12,itemBox13,itemBox14,itemBox15,};
        return itemBoxArray.First(m => string.IsNullOrEmpty(m.Text));//or  FirstOrDefault
    }

now you would get a TextBox returned, and could do whatever you want with it.

Upvotes: 5

devmb
devmb

Reputation: 805

You need Control.ControlCollection.Find and than a cast to TextBox.

TextBox newBox = this.Controls.Find("itemBox1", true).FirstOrDefault() as TextBox;

Once you find your Box you can set the text:

newBox.Text = "my text";

Upvotes: 0

Related Questions