Help to design this TableLayoutPanel - c#

Any ideas how can I achieve this as posted in the picture?
from the three controls in the picture - ignore labels- , the button is fixed meaning that it does not resize but the other two are resizing when I am resizing their form - the same thing ANCHOR does -
Thanks

You don't necessarily need a TableLayout Panel. Just do this
Anchor TextBox to Left, Right and Top
Anchor DropDown to Left, Right and Top
Anchor Button to Right and Top

There are two ways:
Use two TableLayoutPanels (which I prefer) one with five rows and one column (one spacer row with fixed height) above "Optional case step" label, another nested with one row and two columns.
Just as you finally did.

Ok, here is how I did it. let me know if you know how to do it in a better way:
a 2X2 table layout
the combobox should be anchored to left-top-right and ALSO its columnSpan property set to 2
at cell[1,1] : put that text box.. anchor: left-top-right
at cell[1,2] : put that button BUT set its DOCK to the RIGHT
in the row/col editor set column 1 to take 90% and column 2 to take 10%

Related

anchor not sizing buttons properly and text disappearing how to fix it?

in the video below you can see how my buttons behave when i try to resize the window after anchoring them. My application does not have an exist button for some reason either, could not find a solution online and have no clue on how to fix it for the time being. Sorry for potato quality....
https://youtu.be/6WY_19Qdy4c
Did you know that sometimes anchor cannot fix of what will you want to achieve?
Instead of anchoring you can use tableLayoutPanel?
The only properties of tableLayoutPanel is Dock = Fill;
After that you can now add columns and rows in the table and button inside the cell, it will automatically resize your button.
Add a tableLayoutPanel set Dock to Fill
Click tableLayoutPanel
Edit Rows and Columns (Add Column or Rows Change Absolute to Percent it should be 50%)
Press OK
If you want to span Rows and Columns click the control inside the Cell and find ColumnSpan and RowSpan in the properties

TableLayout filling the whole space when one of the two is invisible

In Winforms, I have 2 tableLayout A and B sharing the same space. I would like to switch between them (e.g. via a button), only one visible at a time so that they fill the same space.
What I have tried, following some post : put them both into another TableLayout X as container, with 2 rows, the first row Autosize and the second put as Fill.
I managed to achieve the following : when A is invisible, row 1 Autosize reduce the size to 0 and bring B up, filling all space. But when B is invisible, A does not take all the space.
How can I make A to take all the space ?
Thank you.
Here is what happens when A alone is visible
Here is what happens when B alone is visible
I tried the following in my application. I have to show forms one by one in table lay out. For that, I removed the control(form1),from first row and added another control(form2) to the same row.So,you should also try like this with tablelayout control.
var control = tableLayoutPanel23.GetControlFromPosition(0, 1);
tableLayoutPanel23.Controls.Remove(control);//removed form1
tableLayoutPanel23.Controls.Add(frm2, 0, 1);//added form2
frm1.Dispose();
frm2.Show();
There should be 1 tableLayoutPanel which should have 2 rows and 2 group box in each rows. You can make both the groupbox dock property as fill. Inside You can pro-grammatically change the height of the row by using:
tableLayoutPanel3.RowStyles[0].Height = 0;
Thus when A is invisible B will take the full size of the tableLayoutPanel and vice versa. In case both groupbox visible then the group box will take the size of each row of the tableLayoutPanel:

Adjusting proper anchoring in windows form when you have labels and text boxes combined

I have this problem when i want to put a few labels and text boxes in a row in a Windows Form.
My idea is when I resize the window I want all text boxes to resize equally and to be proportional to the new window size. I tried to do this with Panels and basically this is an example of that
When i change the size of the window what i get is
So basically my text boxes expand equally till they reach one of the other two Panels and after that only the right text box expands. What I did is set anchor to left and right to all components.
Has anyone solved this problem, i would really appreciate the help?
Try the TableLayoutPanel with a single row and 3 (or 6) columns instead.

how to keep objects in place when window is resized in C#

How can I keep the objects of my window (buttons, labels, etc) in center when the window is resized?
Currently, I have 3 buttons in a Windows Form. When I maximize the window, the buttons stay at the top left section of the window. I want them to be in the center as they were when the window was not maximized.
Any help?
You should set the Anchor properties of the object to none,
This will keep it in the middle.
Set the Anchor property of your controls correctly. By default your control is anchored to Top,Left. If you clear this property (anchor to nothing, essentially), your button will remain centered.
(It may seem like you want to anchor to all four sides, but in reality what this will do is resize your button to fill the form!)
To keep your layout fixed and in the middle do this:
On your Form add TableLayoutPanel.
Set it's Dock property to Fill.
Create 3 rows and 3 columns.
Edit rows and columns - set 50% for first and last column and row.
Set fixed size for middle row and column.
Place Panel or anything else you like in 2nd row and 2nd column. It will always be in the middle.
If you are using the visual designer of Visual Studio (And you have no reason not to), the property of your control you seek to manage how they are placed inside a form is "Anchor".
By default, when you create a new control, it is set to "Top-Left", which mean they would stay in a fixed position to the top left of your form. You can change that to anchor them to anything.
You can also disable the anchors and control their position by overriding the Resize method of the form.

winforms adjust controls to push up vertically when others are invisible

I've create a c# winforms form,
It has a bunch of labels positioned and a flowlayoutpanel.
on certain occasions i set one of the labels and the flowlayoutpanel to visible =false.
As a result i want all labels beneath them to be pushed up - at the moment there is a gap where they were.
Also, I'd like the flowlayoutpanel to grow and shrink depending on the number of items it has.
at the moment it is just the size i set it to be in the designer.
please can you help with these 2 issues.
Thanks
If I got you correctly, I would suggest using a TableLayoutPane with two rows. The top row will contain a docked panel with all the controls that may be hidden. The bottom row will contain a docked panel with all the rest.
Set the top row's SizeType to AutoSize and the bottom row's to 100%.
When you want to hide the controls, set the top panel's Visible property to false. Now, because the top row is AutoSized it will shrink to nothing, causing the bottom row to "jump" up.
The TableLayoutPanel does the pushing. Maybe you can use that if there is no better answer in next time.
First problem:
You may use some simple panels to divide your form, give them the dock.fill property. when you'll hide a panel programmatically, the other panels will fill the empty space left.
Second problem:
You have to set the Autosize property to true.

Categories

Resources