GET RELATIVE CONTROL POSITION TO FORM SIZE

Hi All,

I have a windows form.

1. Datagridview.
2. Flowlayoutpanel.

The form is set to maximize.

I want resize the datagridview control height from 0 to Flowlayoutpanel top location (relative to form).

How could I do it ?

Thank you.

LVL 1
emi_sastraAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
Mike TomlinsonConnect With a Mentor Middle School Assistant TeacherCommented:
If you don't want it to cross FLP2 then you have to dock FLP2 first.

So the order of adding & docking would be:
(1) FLP2 Docked to the Right
(2) FLP1 Docked to the Bottom
(3) DataGridView Docked Fill

A picture showing the desired layout would be helpful.
*Sometimes you can't achieve the desired layout with only anchor/dock.  In those cases you may need to employ the TABLELAYOUTPANEL to get finer control over how things are positioned relative to each other.
0
 
Deepak LakkadCommented:
Hi,

You can use following code to set width of DataGridView when form is resized.

    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        DataGridView1.Width = FlowLayoutPanel1.Width
    End Sub

Open in new window


Same way you can set height of the DGV

- Deepak Lakkad
0
 
emi_sastraAuthor Commented:
Hi deepaklakkad,

I don't want to set them at the same size.

I want to set the Datagridview height from 0 to FlowLayoutPanel1 relative top position to screen.

For example screen size = 1024 x 768

FlowLayoutPanel1.top  is at  1000 (this is relative position to form size), thus I want Datagridview.heigth = 990.

Thank you.
0
Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Select the FlowLayoutPanel and set its Dock property to Bottom.  Now adjust its Height in the Size property to the correct amount.

Now select the DataGridView and set its Dock property to Fill.
0
 
emi_sastraAuthor Commented:
Hi Idle_Mind,

I have tried it like you said.
The DataGridView size cross the FlowLayoutPanel  area.

Thank you.
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Docking is very finicky and sometimes cannot be "undone" when it has been done "out of order".  You need to add the FlowLayoutPanel and set its Dock to Bottom FIRST.

This may require you start with a BRAND NEW Form and add the FlowLayoutPanel and set Dock before you do the same with the DataGridView.
0
 
emi_sastraAuthor Commented:
I've done at design time.
I also set anchor all direction to DataGridView

Thank you.
0
 
emi_sastraAuthor Commented:
I meant still DataGridView size cross the FlowLayoutPanel  area.

Thank you.
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Did you try by starting with a NEW form and then adding the FlowLayoutPanel FIRST?
0
 
emi_sastraAuthor Commented:
I don't do that, since I have put it at design time.

Thank you.
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
I understand that.  The Dock property gets confused easily and you can't reliably change the "order" of docked items.

What I'm proposing is that you RECREATE the Form (at design-time) and be sure to add and dock the FlowLayoutPanel before the DataGridView.
0
 
emi_sastraAuthor Commented:
Another problem is have also a FlowLayoutPanel (flp2) at the right side (vertical box).
When I dock flp1 to bottom, then it also cross the flp2 ?

Thank you.
0
 
emi_sastraAuthor Commented:
Ok. It works.

Thank you very much for your help.

0
All Courses

From novice to tech pro — start learning today.