SIGN UP MEMBER LOGIN:    
ARTICLE

Container Controls 5: FlowLayoutPanel

Posted by Sivaraman Dhamodaran Articles | Windows Controls C# July 30, 2011
In this article we will explore the properties and behaviour of the FlowLayoutPanel container. Then we will explore properties and methods and how we use it with an example and video demos.
Reader Level:
Download Files:
 

1. Introduction


A Flow Layout Panel container arranges the controls in a specific pre-defined order. When the Container holding the control is resized the controls are automatically arranged inside the container to maintain the flow specified.

 

In this example we will place some controls inside the flow layout container and see some important properties and methods that controls the container content.

 

2. About the sample


The screen shot of the example is shown below:

 

Pic01.JPG

 

In the topside of the form you can see four text boxes and two radio buttons placed inside the Flow Container. In the bottom there are two radio groups. The Flow Break radio group is nested inside the Control radio group. In the bottom of the form there are two check boxes.

 

Flow Direction tells in what direction the controls should be arranged. Say for example Top to Bottom radio button option arranges the control to fill the height the container and move to the next column to layout the controls from top to bottom.

 

Flow Break is useful for overriding the default control flow break. Let us say the direction is Left to Right and you have started placing the controls in the Flow container. The controls you place are allowed only in the current row. But, you can place anywhere in the current row. When there is no room in the current row based on the size of the flow container, the control goes and sits on the next row. This is what called a break. And this happens when the Wrap Controls check box is in checked state. So in the sample an option to break the flow of the control is provided by selecting the control. When the Break Flow By green textbox is selected the next controls in the flow will move to the next row.

 

Enable Auto Scroll check box provides a scroll bar and allows the existence of only one row or one column of controls by adding a scroll bar. The Wrap control allows control to be arranged in the next row or next column based on the flow direction set to the container.

 

OK now let us go to the sample implementation details.

 

3. Flow Layout and Placing the Controls

 

The FlowLayoutPanel control is placed in the form and the control is available in the container group of the toolbox. After placing the FlowLayoutPanel four text boxes and two radio buttons are dropped inside it. When placing the control inside this container .Net restricts you place it in the first row of the container. And it will produce one more row when the there is no room in the first row for the control coming new.

 

This is shown in the video: 01_FlowLayoutAddingControls.avi

 

4. Dock the Flow Layout to Top


The controls are already placed inside the FlowLayoutPanel container. Now select the Panel and then from the dock property chose the top button. This will dock the Container in the top edge of the form. Now, when you resize the form, the container also gets resized. Since the framework takes care of the layout of the controls inside The container, the resize will automatically arrange the controls.

 

Setting the top Docking for the flow layout is shown in the video: 02_Dockittotop.avi

 

5. AutoScroll and WrapContents Properties


The AutoScroll and WrapContents properties are used to change the way controls are laid out inside the FlowLayoutPanel. When we set AutoScroll property to true, the controls will be arranged in a single row and a scroll bar appears so that you can see all the controls by scrolling the content of the FlowLayoutPanel. When you set the WrapContents property to true the controls are wrapped into the next line when there is no room in the first line. Also you can check this by resizing the window.

 

Note that the combination of these two properties can cause some confusion. So remember that when AutoScroll is already set to true, WrapContents property has no effect whether it is set to true or not. Similarly, when the WrapContents property is already set to true, setting the AutoScroll property to true has no effect. Hence, before setting one property to true, make sure the other one is set to false. In the sample I intentionally did not make this validation, so that you can see how these check boxes in combination behaves.

 

The event CheckedChanged for both the check boxes are handled and the code is shown below:

 

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

    //Flow 01: Wrap Controls. The default is True

    if (checkBox1.CheckState == CheckState.Checked)

        FlowLayoutCC.WrapContents  = true;

    else

        FlowLayoutCC.WrapContents = false;

}

 

private void checkBox2_CheckedChanged(object sender, EventArgs e)

{

    //Flow 02: Enable or Disable the AutoScroll

    if (checkBox2.CheckState == CheckState.Checked )

        FlowLayoutCC.AutoScroll = true;

    else

        FlowLayoutCC.AutoScroll = false;

}

 

The above code in effect is shown in the video: 03_WrapAutoScroll.avi

 

6. Flow Direction


The control flow direction inside the FlowLayoutPanel is controled by the FlowDirection property of it. At runtime the
FlowDirection enumeration is used to assign the correct flow directions to this property. In this example I have only shown you two flow directions. The following is the code for it:

 

//Flow 03: Set the Flow Direction       

private void radLR_CheckedChanged(object sender, EventArgs e)

{

    if ( radLR.Checked == true)

        FlowLayoutCC.FlowDirection = FlowDirection.LeftToRight;

}

 

private void radTB_CheckedChanged(object sender, EventArgs e)

{

    if (radTB.Checked == true)

        FlowLayoutCC.FlowDirection = FlowDirection.TopDown;

}

 

The above code in effect is shown in the video: 04_FlowDirection.avi

 

7. Flow Break


When the wrapcontents property is set to true the control placement flow is automatically broken to the next line or next column when there is no space. It actually works like word processor and how it breaks the word to the next line. With the SetFlowBreak method of the FlowLayoutPanel you can force the container to do a flow break by specifying the control name and then specifying a Boolean value that says break is required or not.

 

The following is the code to explain the flow break. The code is a handler for the Checked Changed event of the radio button that corresponds to the Flow break.

 

//Flow 04: Set Flow Break (Like Page break)

private void radGreenText_CheckedChanged(object sender, EventArgs e)

{

    if (radGreenText.Checked == true)

        FlowLayoutCC.SetFlowBreak(GreenText, true);

    else

        FlowLayoutCC.SetFlowBreak(GreenText, false);

}

 

private void radBreakRad_CheckedChanged(object sender, EventArgs e)

{

    if (radBreakRad.Checked == true)

        FlowLayoutCC.SetFlowBreak(radWrap, true);

    else

        FlowLayoutCC.SetFlowBreak(radWrap, false);

}

 

The above code in effect is shown in the video: 05_FlowBreak.avi

 

Note: The Attached Sample is in VS2005 format. Use 7zip to extract all the videos. 7zip is free and you can download it taking help from google.

Login to add your contents and source code to this article
share this article :
post comment
 

Thanks for the comment.

Posted by Sivaraman Dhamodaran Aug 01, 2011

Nice Article

Posted by Angelina Erin Aug 01, 2011
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
    Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Become a Sponsor