Show / Hide Table of Contents

KryptonTableLayoutPanel

Overview

The KryptonTableLayoutPanel class provides a Krypton-themed replacement for the standard Windows TableLayoutPanel. It inherits from TableLayoutPanel and offers enhanced visual styling, seamless theme integration, and improved appearance while maintaining full compatibility with the standard TableLayoutPanel functionality.

Class Hierarchy

System.Object
└── System.MarshalByRefObject
    └── System.ComponentModel.Component
        └── System.Windows.Forms.Control
            └── System.Windows.Forms.TableLayoutPanel
                └── Krypton.Toolkit.KryptonTableLayoutPanel

Constructor and Initialization

public KryptonTableLayoutPanel()

The constructor initializes enhanced features:

  • Background Panel: Creates an internal KryptonPanel for enhanced theming
  • Palette Integration: Automatic Krypton theme detection and application
  • Visual States: Common, Normal, and Disabled state management
  • Layout Management: Enhanced layout handling with Krypton styling

Key Properties

Visual State Properties

public PaletteMode PaletteMode { get; set; }
public PaletteBackStyle PanelBackStyle { get; set; }
public PaletteTripleRedirect StateCommon { get; }
public PaletteTriple StateDisabled { get; }
public PaletteTriple StateNormal { get; }
  • PaletteMode: Controls which palette to use for theming
  • PanelBackStyle: Background style for the panel
  • StateCommon: Base styling configuration for all states
  • StateNormal: Default appearance when enabled
  • StateDisabled: Appearance when control is disabled

Hidden Properties

The following properties are hidden from the designer but remain accessible:

[Browsable(false)]
public override Color BackColor { get; set; }

[Browsable(false)]
public override Image? BackgroundImage { get; set; }

[Browsable(false)]
public override ImageLayout BackgroundImageLayout { get; set; }

[Browsable(false)]
public override Font Font { get; set; }

[Browsable(false)]
public override Color ForeColor { get; set; }

[Browsable(false)]
public override string Text { get; set; }

Advanced Usage Patterns

Basic Table Layout Setup

public void SetupBasicTableLayout()
{
    var tableLayout = new KryptonTableLayoutPanel
    {
        Dock = DockStyle.Fill,
        ColumnCount = 3,
        RowCount = 3,
        BackColor = Color.Transparent
    };

    // Set column styles
    tableLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));
    tableLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));
    tableLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));

    // Set row styles
    tableLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
    tableLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
    tableLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));

    // Add controls
    for (int row = 0; row < 3; row++)
    {
        for (int col = 0; col < 3; col++)
        {
            var button = new KryptonButton
            {
                Text = $"Button {row},{col}",
                Dock = DockStyle.Fill
            };
            tableLayout.Controls.Add(button, col, row);
        }
    }

    Controls.Add(tableLayout);
}

Form Layout with KryptonTableLayoutPanel

public class FormLayout : Form
{
    private KryptonTableLayoutPanel mainLayout;
    private KryptonHeaderGroup headerGroup;
    private KryptonPanel contentPanel;
    private KryptonStatusStrip statusStrip;

    public FormLayout()
    {
        InitializeComponent();
        SetupLayout();
    }

    private void SetupLayout()
    {
        // Main table layout
        mainLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 1,
            RowCount = 3,
            BackColor = Color.Transparent
        };

        // Set row styles
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F)); // Header
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); // Content
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 25F)); // Status

        // Header group
        headerGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel,
            HeaderStyleSecondary = HeaderStyle.Panel
        };
        headerGroup.HeaderPrimary.Content.ShortText = "Application Title";
        headerGroup.HeaderSecondary.Content.ShortText = "Subtitle";

        // Content panel
        contentPanel = new KryptonPanel
        {
            Dock = DockStyle.Fill,
            PanelBackStyle = PaletteBackStyle.PanelClient
        };

        // Status strip
        statusStrip = new KryptonStatusStrip();

        // Add controls to layout
        mainLayout.Controls.Add(headerGroup, 0, 0);
        mainLayout.Controls.Add(contentPanel, 0, 1);
        mainLayout.Controls.Add(statusStrip, 0, 2);

        Controls.Add(mainLayout);
    }
}

Dynamic Table Layout

public class DynamicTableLayout : UserControl
{
    private KryptonTableLayoutPanel tableLayout;
    private KryptonButton addRowButton;
    private KryptonButton addColumnButton;
    private KryptonButton removeRowButton;
    private KryptonButton removeColumnButton;

    public DynamicTableLayout()
    {
        InitializeComponent();
        SetupTableLayout();
    }

    private void SetupTableLayout()
    {
        // Main table layout
        tableLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 2,
            BackColor = Color.Transparent
        };

        // Control buttons
        addRowButton = new KryptonButton { Text = "Add Row", Dock = DockStyle.Fill };
        addColumnButton = new KryptonButton { Text = "Add Column", Dock = DockStyle.Fill };
        removeRowButton = new KryptonButton { Text = "Remove Row", Dock = DockStyle.Fill };
        removeColumnButton = new KryptonButton { Text = "Remove Column", Dock = DockStyle.Fill };

        // Event handlers
        addRowButton.Click += AddRowButton_Click;
        addColumnButton.Click += AddColumnButton_Click;
        removeRowButton.Click += RemoveRowButton_Click;
        removeColumnButton.Click += RemoveColumnButton_Click;

        // Add buttons to layout
        tableLayout.Controls.Add(addRowButton, 0, 0);
        tableLayout.Controls.Add(addColumnButton, 1, 0);
        tableLayout.Controls.Add(removeRowButton, 0, 1);
        tableLayout.Controls.Add(removeColumnButton, 1, 1);

        Controls.Add(tableLayout);
    }

    private void AddRowButton_Click(object? sender, EventArgs e)
    {
        tableLayout.RowCount++;
        tableLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 100F / tableLayout.RowCount));
        
        // Adjust existing row styles
        for (int i = 0; i < tableLayout.RowCount - 1; i++)
        {
            tableLayout.RowStyles[i].SizeType = SizeType.Percent;
            tableLayout.RowStyles[i].Height = 100F / tableLayout.RowCount;
        }
    }

    private void AddColumnButton_Click(object? sender, EventArgs e)
    {
        tableLayout.ColumnCount++;
        tableLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F / tableLayout.ColumnCount));
        
        // Adjust existing column styles
        for (int i = 0; i < tableLayout.ColumnCount - 1; i++)
        {
            tableLayout.ColumnStyles[i].SizeType = SizeType.Percent;
            tableLayout.ColumnStyles[i].Width = 100F / tableLayout.ColumnCount;
        }
    }

    private void RemoveRowButton_Click(object? sender, EventArgs e)
    {
        if (tableLayout.RowCount > 1)
        {
            // Remove controls in the last row
            for (int col = 0; col < tableLayout.ColumnCount; col++)
            {
                var control = tableLayout.GetControlFromPosition(col, tableLayout.RowCount - 1);
                if (control != null)
                {
                    tableLayout.Controls.Remove(control);
                }
            }

            tableLayout.RowCount--;
            tableLayout.RowStyles.RemoveAt(tableLayout.RowStyles.Count - 1);
            
            // Adjust remaining row styles
            for (int i = 0; i < tableLayout.RowCount; i++)
            {
                tableLayout.RowStyles[i].SizeType = SizeType.Percent;
                tableLayout.RowStyles[i].Height = 100F / tableLayout.RowCount;
            }
        }
    }

    private void RemoveColumnButton_Click(object? sender, EventArgs e)
    {
        if (tableLayout.ColumnCount > 1)
        {
            // Remove controls in the last column
            for (int row = 0; row < tableLayout.RowCount; row++)
            {
                var control = tableLayout.GetControlFromPosition(tableLayout.ColumnCount - 1, row);
                if (control != null)
                {
                    tableLayout.Controls.Remove(control);
                }
            }

            tableLayout.ColumnCount--;
            tableLayout.ColumnStyles.RemoveAt(tableLayout.ColumnStyles.Count - 1);
            
            // Adjust remaining column styles
            for (int i = 0; i < tableLayout.ColumnCount; i++)
            {
                tableLayout.ColumnStyles[i].SizeType = SizeType.Percent;
                tableLayout.ColumnStyles[i].Width = 100F / tableLayout.ColumnCount;
            }
        }
    }
}

Data Entry Form Layout

public class DataEntryForm : UserControl
{
    private KryptonTableLayoutPanel mainLayout;
    private List<KryptonTextBox> inputFields;
    private List<KryptonLabel> labels;

    public DataEntryForm()
    {
        InitializeComponent();
        SetupDataEntryLayout();
    }

    private void SetupDataEntryLayout()
    {
        mainLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 5,
            BackColor = Color.Transparent,
            Padding = new Padding(10)
        };

        // Set column styles
        mainLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 120F)); // Labels
        mainLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); // Inputs

        // Set row styles
        for (int i = 0; i < 5; i++)
        {
            mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
        }

        inputFields = new List<KryptonTextBox>();
        labels = new List<KryptonLabel>();

        // Create form fields
        string[] fieldNames = { "First Name:", "Last Name:", "Email:", "Phone:", "Address:" };

        for (int i = 0; i < fieldNames.Length; i++)
        {
            // Label
            var label = new KryptonLabel
            {
                Text = fieldNames[i],
                Dock = DockStyle.Fill,
                TextAlign = ContentAlignment.MiddleRight,
                LabelStyle = LabelStyle.NormalControl
            };
            labels.Add(label);

            // Input field
            var textBox = new KryptonTextBox
            {
                Dock = DockStyle.Fill,
                Margin = new Padding(5, 0, 0, 0)
            };
            inputFields.Add(textBox);

            // Add to layout
            mainLayout.Controls.Add(label, 0, i);
            mainLayout.Controls.Add(textBox, 1, i);
        }
    }

    public Dictionary<string, string> GetFormData()
    {
        var data = new Dictionary<string, string>();
        string[] fieldNames = { "FirstName", "LastName", "Email", "Phone", "Address" };

        for (int i = 0; i < inputFields.Count && i < fieldNames.Length; i++)
        {
            data[fieldNames[i]] = inputFields[i].Text;
        }

        return data;
    }

    public void SetFormData(Dictionary<string, string> data)
    {
        string[] fieldNames = { "FirstName", "LastName", "Email", "Phone", "Address" };

        for (int i = 0; i < inputFields.Count && i < fieldNames.Length; i++)
        {
            if (data.TryGetValue(fieldNames[i], out string value))
            {
                inputFields[i].Text = value;
            }
        }
    }
}

Integration Patterns

Settings Dialog Layout

public class SettingsDialog : Form
{
    private KryptonTableLayoutPanel mainLayout;
    private KryptonHeaderGroup generalGroup;
    private KryptonHeaderGroup appearanceGroup;
    private KryptonHeaderGroup advancedGroup;

    public SettingsDialog()
    {
        InitializeComponent();
        SetupSettingsLayout();
    }

    private void SetupSettingsLayout()
    {
        // Main layout
        mainLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 1,
            RowCount = 3,
            BackColor = Color.Transparent,
            Padding = new Padding(10)
        };

        // Set row styles
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));

        // General settings group
        generalGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel,
            HeaderStyleSecondary = HeaderStyle.Panel
        };
        generalGroup.HeaderPrimary.Content.ShortText = "General Settings";
        SetupGeneralSettings(generalGroup);

        // Appearance settings group
        appearanceGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel,
            HeaderStyleSecondary = HeaderStyle.Panel
        };
        appearanceGroup.HeaderPrimary.Content.ShortText = "Appearance";
        SetupAppearanceSettings(appearanceGroup);

        // Advanced settings group
        advancedGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel,
            HeaderStyleSecondary = HeaderStyle.Panel
        };
        advancedGroup.HeaderPrimary.Content.ShortText = "Advanced";
        SetupAdvancedSettings(advancedGroup);

        // Add groups to layout
        mainLayout.Controls.Add(generalGroup, 0, 0);
        mainLayout.Controls.Add(appearanceGroup, 0, 1);
        mainLayout.Controls.Add(advancedGroup, 0, 2);
    }

    private void SetupGeneralSettings(KryptonHeaderGroup group)
    {
        var layout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 3,
            BackColor = Color.Transparent
        };

        // Add general settings controls
        // Implementation details...
    }

    private void SetupAppearanceSettings(KryptonHeaderGroup group)
    {
        var layout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 3,
            BackColor = Color.Transparent
        };

        // Add appearance settings controls
        // Implementation details...
    }

    private void SetupAdvancedSettings(KryptonHeaderGroup group)
    {
        var layout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 3,
            BackColor = Color.Transparent
        };

        // Add advanced settings controls
        // Implementation details...
    }
}

Dashboard Layout

public class DashboardLayout : UserControl
{
    private KryptonTableLayoutPanel dashboardLayout;
    private KryptonHeaderGroup statsGroup;
    private KryptonHeaderGroup chartsGroup;
    private KryptonHeaderGroup recentActivityGroup;

    public DashboardLayout()
    {
        InitializeComponent();
        SetupDashboardLayout();
    }

    private void SetupDashboardLayout()
    {
        // Main dashboard layout
        dashboardLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 2,
            BackColor = Color.Transparent,
            Padding = new Padding(10)
        };

        // Set column styles
        dashboardLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
        dashboardLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));

        // Set row styles
        dashboardLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
        dashboardLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));

        // Statistics group
        statsGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        statsGroup.HeaderPrimary.Content.ShortText = "Statistics";
        SetupStatisticsGroup(statsGroup);

        // Charts group
        chartsGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        chartsGroup.HeaderPrimary.Content.ShortText = "Charts";
        SetupChartsGroup(chartsGroup);

        // Recent activity group
        recentActivityGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        recentActivityGroup.HeaderPrimary.Content.ShortText = "Recent Activity";
        SetupRecentActivityGroup(recentActivityGroup);

        // Add groups to layout
        dashboardLayout.Controls.Add(statsGroup, 0, 0);
        dashboardLayout.Controls.Add(chartsGroup, 1, 0);
        dashboardLayout.Controls.Add(recentActivityGroup, 0, 1);
        // Leave position (1,1) empty for future use
    }

    private void SetupStatisticsGroup(KryptonHeaderGroup group)
    {
        var statsLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 2,
            BackColor = Color.Transparent
        };

        // Add statistics controls
        // Implementation details...
    }

    private void SetupChartsGroup(KryptonHeaderGroup group)
    {
        var chartsLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 1,
            RowCount = 1,
            BackColor = Color.Transparent
        };

        // Add chart controls
        // Implementation details...
    }

    private void SetupRecentActivityGroup(KryptonHeaderGroup group)
    {
        var activityLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 1,
            RowCount = 1,
            BackColor = Color.Transparent
        };

        // Add activity controls
        // Implementation details...
    }
}

Performance Considerations

  • Theme Integration: Lightweight wrapper with minimal overhead
  • Layout Performance: Efficient layout calculations with Krypton styling
  • Memory Management: Proper disposal of internal panel resources
  • Rendering: Optimized background panel rendering

Common Issues and Solutions

Background Not Visible

Issue: KryptonTableLayoutPanel background not showing
Solution: Ensure proper panel back style:

tableLayout.PanelBackStyle = PaletteBackStyle.PanelClient;
tableLayout.StateNormal.Back.Color1 = Color.LightGray;

Layout Not Updating

Issue: Layout not updating when controls are added/removed
Solution: Force layout update:

tableLayout.PerformLayout();
tableLayout.Invalidate();

Theme Not Applied

Issue: Theme not applied to table layout panel
Solution: Ensure proper palette mode:

tableLayout.PaletteMode = PaletteMode.Global;

Design-Time Integration

Visual Studio Designer

  • Toolbox Integration: Available with custom bitmap representation
  • Property Window: All standard TableLayoutPanel properties available
  • Theme Integration: Automatic Krypton theming applied
  • Layout Editor: Standard TableLayoutPanel layout editor

Property Categories

  • Layout: Core layout properties (ColumnCount, RowCount, ColumnStyles, RowStyles)
  • Appearance: Visual properties (PaletteMode, PanelBackStyle)
  • Visuals: Theme and styling properties (StateCommon, StateNormal, StateDisabled)

Migration from Standard TableLayoutPanel

Direct Replacement

// Old code
TableLayoutPanel tableLayout = new TableLayoutPanel();

// New code
KryptonTableLayoutPanel tableLayout = new KryptonTableLayoutPanel();

Enhanced Features

// Standard TableLayoutPanel (basic)
var standardTlp = new TableLayoutPanel();

// KryptonTableLayoutPanel (enhanced)
var kryptonTlp = new KryptonTableLayoutPanel
{
    PaletteMode = PaletteMode.Global,
    PanelBackStyle = PaletteBackStyle.PanelClient,
    StateNormal = // Full theme control
};

Real-World Integration Examples

Application Main Layout

public partial class MainApplicationForm : Form
{
    private KryptonTableLayoutPanel mainLayout;
    private KryptonHeaderGroup menuGroup;
    private KryptonPanel contentPanel;
    private KryptonStatusStrip statusStrip;

    public MainApplicationForm()
    {
        InitializeComponent();
        SetupMainLayout();
    }

    private void SetupMainLayout()
    {
        // Main layout
        mainLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 1,
            RowCount = 3,
            BackColor = Color.Transparent
        };

        // Set row styles
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F)); // Menu
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); // Content
        mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 25F)); // Status

        // Menu group
        menuGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        menuGroup.HeaderPrimary.Content.ShortText = "Main Menu";
        SetupMenuGroup(menuGroup);

        // Content panel
        contentPanel = new KryptonPanel
        {
            Dock = DockStyle.Fill,
            PanelBackStyle = PaletteBackStyle.PanelClient
        };

        // Status strip
        statusStrip = new KryptonStatusStrip();

        // Add to layout
        mainLayout.Controls.Add(menuGroup, 0, 0);
        mainLayout.Controls.Add(contentPanel, 0, 1);
        mainLayout.Controls.Add(statusStrip, 0, 2);

        Controls.Add(mainLayout);
    }

    private void SetupMenuGroup(KryptonHeaderGroup group)
    {
        var menuLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 5,
            RowCount = 1,
            BackColor = Color.Transparent
        };

        // Add menu buttons
        var fileButton = new KryptonButton { Text = "File", Dock = DockStyle.Fill };
        var editButton = new KryptonButton { Text = "Edit", Dock = DockStyle.Fill };
        var viewButton = new KryptonButton { Text = "View", Dock = DockStyle.Fill };
        var toolsButton = new KryptonButton { Text = "Tools", Dock = DockStyle.Fill };
        var helpButton = new KryptonButton { Text = "Help", Dock = DockStyle.Fill };

        menuLayout.Controls.Add(fileButton, 0, 0);
        menuLayout.Controls.Add(editButton, 1, 0);
        menuLayout.Controls.Add(viewButton, 2, 0);
        menuLayout.Controls.Add(toolsButton, 3, 0);
        menuLayout.Controls.Add(helpButton, 4, 0);

        group.Panel.Controls.Add(menuLayout);
    }
}

Configuration Panel Layout

public class ConfigurationPanel : UserControl
{
    private KryptonTableLayoutPanel configLayout;
    private KryptonHeaderGroup databaseGroup;
    private KryptonHeaderGroup networkGroup;
    private KryptonHeaderGroup securityGroup;

    public ConfigurationPanel()
    {
        InitializeComponent();
        SetupConfigurationLayout();
    }

    private void SetupConfigurationLayout()
    {
        // Configuration layout
        configLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 1,
            RowCount = 3,
            BackColor = Color.Transparent,
            Padding = new Padding(10)
        };

        // Set row styles
        configLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
        configLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
        configLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));

        // Database configuration group
        databaseGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        databaseGroup.HeaderPrimary.Content.ShortText = "Database Configuration";
        SetupDatabaseGroup(databaseGroup);

        // Network configuration group
        networkGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        networkGroup.HeaderPrimary.Content.ShortText = "Network Configuration";
        SetupNetworkGroup(networkGroup);

        // Security configuration group
        securityGroup = new KryptonHeaderGroup
        {
            Dock = DockStyle.Fill,
            HeaderStylePrimary = HeaderStyle.Panel
        };
        securityGroup.HeaderPrimary.Content.ShortText = "Security Configuration";
        SetupSecurityGroup(securityGroup);

        // Add groups to layout
        configLayout.Controls.Add(databaseGroup, 0, 0);
        configLayout.Controls.Add(networkGroup, 0, 1);
        configLayout.Controls.Add(securityGroup, 0, 2);
    }

    private void SetupDatabaseGroup(KryptonHeaderGroup group)
    {
        var dbLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 4,
            BackColor = Color.Transparent
        };

        // Database configuration controls
        // Implementation details...
    }

    private void SetupNetworkGroup(KryptonHeaderGroup group)
    {
        var netLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 4,
            BackColor = Color.Transparent
        };

        // Network configuration controls
        // Implementation details...
    }

    private void SetupSecurityGroup(KryptonHeaderGroup group)
    {
        var secLayout = new KryptonTableLayoutPanel
        {
            Dock = DockStyle.Fill,
            ColumnCount = 2,
            RowCount = 4,
            BackColor = Color.Transparent
        };

        // Security configuration controls
        // Implementation details...
    }
}
Back to top Krypton Component Suite 2024 BSD 3-Clause License © Component Factory Pty Ltd, 2006 - 2016, All rights reserved. Modifications by Peter Wagner (aka Wagnerp), Simon Coghlan (aka Smurf-IV), Giduac, Tobitege, Lesarndro, KamaniAR & Ahmed Abdelhameed et al. 2017 - 2025. All rights reserved. https://github.com/Krypton-Suite