C# Windows app. Increase the height of a multiline textbox to show all text entered

Hi

I am new to C# so apologies if this is a silly question.

I have a windows form with a series of textboxes for data input.  A few of them are multiline.  I need to expand the height of the multiline text box to show all the data that has been input without a scrollbar.

I will also need to move all the controls below the adjusted text box down the form to a new position to avoid overlap.

Any sample code or help would be great!

Thanks in advance!
greepAsked:
Who is Participating?
 
kris_perConnect With a Mentor Commented:

I am not sure if you are alreading changing the height of the multiline textbox to fit all the lines of the text; If not, try with the code below:

// Below code will keep increasing the height of the textbox as
// required as user types in the textbox and will push other 
// controls down.

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;
            if (textBox != null)
            {
                int prevHeight = textBox.Height;
                int newHeight = (int)( (textBox.Lines.Length+1) * (textBox.Font.GetHeight() + 3));
                if (newHeight > prevHeight)
                {
                    textBox.Height = newHeight;

                    int heightChange = textBox.Height - prevHeight;
                    MoveControlsBelow(textBox, heightChange);
                }
            }
        }



public void MoveControlsBelow(Control control, int moveHeight)
        {
            foreach (Control c in this.Controls)
            {
                if (c != control)
                {
                    if (c.Location.Y >= control.Location.Y)
                    {
                        c.Location = new Point(c.Location.X, c.Location.Y + moveHeight);
                    }
                }
            }
        }

Open in new window

0
 
ghayasurrehmanCommented:
set textbox property textBox1.Multiline = True

just drag and drop your controls where you want
0
Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

 
kris_perCommented:

One option is to use 'TableLayoutPanel' in the designer which will automatically push the controls down.
Add a TableLayoutPanel to the form in the designer.
Arrange the textboxes and other controls in the rows of that table.
when you increase the height of a multiline textbox, increase the height of the table row as well (like tableLayoutPanel1.RowStyles[i].Height += 30). This will automatically push all the controls in the rows below down.

Another option is to programatically change the Location of the controls as shown in the code below.

public void MoveControlsBelow(Control control, int moveHeight)
        {
            foreach (Control c in this.Controls)
            {
                if (c != control)
                {
                    if (c.Location.Y >= control.Location.Y)
                    {
                        c.Location = new Point(c.Location.X, c.Location.Y + moveHeight);
                    }
                }
            }
        }

Open in new window

0
 
Vikram Singh SainiSoftware Engineer cum AD DeveloperCommented:
I agree with Kris per's solution. That is the best answer.

Regards,
VSS
0
 
greepAuthor Commented:
Thanks!  Much appreciated!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.