User Interface for .NET / User's Guide / Custom Controls / Panel Bar

In This Topic
    Panel Bar
    In This Topic
     Overview

     

    The Nevron Panel Bar is a generic container control which provides an easy and convenient way for storing large amount of controls within bands. It mimics the famous Outlook navigation bar and provides extensible rendering and customization features. Using this control makes it very easy to organize the navigation part of your application.

     Bands

    The NPanelBar control contains bands. The NBand is a separate control represented by a client area and a caption. It has two states - collapsed and expanded. Only one band in the collection may be in expanded state at a time. The user can toggle a band's state by clicking its caption. If the band is already expanded the click will perform no action. Programmatically, a band can be expanded by simply setting its state. Controls are added to a band via its ContainerPanel's Controls property.

     

    The following example demonstrates how to create and use a NPanelBar control:

    C#
    Copy Code
    NPanelBar bar = new NPanelBar();
    bar.ImageList = this.imageList1;
    
    //create two bands and add them to the bar
    NBand band;
    band = new NBand();
    band.Caption = "My Band 1";
    band.ImageIndex = 0;
    band.TextAlign = HorizontalAlignment.Center;
    
    //add some controls to the band, using its ContainerPanel property
    TextBox textBox = new TextBox();
    textBox.Text = "TextBox in a band";
    band.ContainerPanel.Controls.Add(textBox);
    
    bar.Bands.Add(band);
    
    //hook to band events
    bar.BandExpanding += new BandExpandingEventHandler(OnBandExpanding);
    bar.BandExpanded += new BandEventHandler(OnBandExpanded);
    
    ...
    
    private void OnBanExpanding(object sender, NBandCancelEventArgs args)
    {
            NPanelBar bar = sender as NPanelBar;
            int bandIndex = bar.Bands.IndexOf(args.Band);
            if(bandIndex == 1)
                            args.Cancel = true;
    }
    private void OnBandExpanded(object sender, NBandEventArgs args)
    {
            MessageBox.Show("Band expanded: " + args.Band.Caption);
    }
    
    Visual Basic
    Copy Code
    Dim bar As NPanelBar = New NPanelBar()
    bar.ImageList = Me.imageList1
    
    'create two bands and add them to the bar
    Dim band As NBand 
    band = New NBand()
    band.Caption = "My Band 1"
    band.ImageIndex = 0
    band.TextAlign = HorizontalAlignment.Center
    
    'add some controls to the band, using its ContainerPanel property
    Dim textBox As TextBox = New TextBox()
    textBox.Text = "TextBox in a band"
    band.ContainerPanel.Controls.Add(textBox)
    
    bar.Bands.Add(band)
    
    'hook to band events
    AddHandler BandExpanding, AddressOf OnBandExpanding
    AddHandler BandExpanded, AddressOf OnBandExpanded
    
    ...
    
    Private Sub OnBanExpanding(ByVal sender As Object, ByVal args As NBandCancelEventArgs) Handles bar.BandExpanding
        Dim bar As NPanelBar = TryCast(sender, NPanelBar)
        Dim bandIndex As Integer = bar.Bands.IndexOf(args.Band)
        If bandIndex = 1 Then
            args.Cancel = True
        End If
    End Sub
    
    Private Sub OnBandExpanded(ByVal sender As Object, ByVal args As NBandEventArgs) Handles bar.BandExpanded
        MessageBox.Show("Band expanded: " + args.Band.Caption)
    End Sub
    
     Customizing Bands

     

    You can control caption height, image index, text align and image size per band. Caption rendering depends on the parent Panel Bar palette and renderer.

     Remarks
    You have access to the currently expanded band in the panel bar via its GetExpandedBand method.