mcpField
S
syncfusion-winforms-card-layout

syncfusion-winforms-card-layout

github.com/syncfusionDesign & UI280 installsUpdated 1w ago
Repository

About syncfusion-winforms-card-layout

A skill guide for Windows Forms developers using Syncfusion CardLayout to arrange controls as cards, with one visible at a time. It covers selection by name or order, navigation, layout modes, and sizing behavior.

Key features

  1. 01Arrange controls as a stack of cards
  2. 02Select cards by name or index
  3. 03Navigate to first, next, previous, or last card
  4. 04Configure default or fill layout mode
  5. 05Set card names and sizing behavior

Use cases

  1. 01Build a wizard with sequential navigation
  2. 02Switch among property pages
  3. 03Control view changes with buttons
  4. 04Choose the visible card from a dropdown

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/syncfusion/winforms-ui-components-skills --skill syncfusion-winforms-card-layout

After installing, type/syncfusion-winforms-card-layoutin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
card-navigation.md
child-controls.md
configuring-cardlayout.md
getting-started.md

Details

From the project README

Implementing CardLayout in Windows Forms

When to Use This Skill

Use this skill when you need to:

  • Create a stack-based card layout that displays one card (control) at a time
  • Build wizard-style interfaces with sequential card navigation
  • Implement property pages with card switching
  • Organize multiple panels or controls as cards within a container
  • Navigate programmatically between different views or screens

Component Overview

CardLayout is a layout manager that organizes controls in a stack-of-cards appearance. Each control added to the layout becomes a "card," and only one card is visible at a time. The container acts as a stack of cards, with the first component added being initially visible. Cards can be configured with custom names, images, and sizing behavior.

Key Capabilities:

  • Set unique names for each card
  • Navigate between cards (First, Next, Previous, Last)
  • Configure layout modes (Default or Fill)
  • Maintain aspect ratio for child controls
  • Get/set selected card by name or index

Documentation and Navigation Guide

Getting Started

📄 Read: references/getting-started.md

  • Assembly and NuGet package installation
  • Adding CardLayout via designer or code
  • Creating and configuring container panel
  • Adding child controls as cards
  • Basic card navigation with Next/Previous methods
Configuring CardLayout

📄 Read: references/configuring-cardlayout.md

  • Setting custom card names with SetCardName
  • Getting card names and components
  • Working with card indices (NextCardIndex, PreviousCardIndex)
  • Aspect ratio maintenance (MaintainAspectRatio)
  • Layout modes: Default vs Fill
  • Setting preferred and minimum sizes
Card Navigation

📄 Read: references/card-navigation.md

  • Selecting cards by name using SelectedCard property
  • Navigation methods: First(), Next(), Previous(), Last()
  • Using SmartTag in designer for card selection
  • Code-based navigation with buttons
  • ComboBox integration for card selection
  • Runtime card switching
Child Controls Configuration

📄 Read: references/child-controls.md

  • Adding child controls as cards to the layout
  • Image settings for cards
  • PreferredSize and MinimumSize configuration
  • Container and child control setup
  • Styling child controls

Quick Start Example

using Syncfusion.Windows.Forms.Tools;
using System.Windows.Forms;

public class CardLayoutForm : Form
{
    private CardLayout cardLayout1;
    private Panel cardLayoutPanel;
    private Panel card1;
    private Panel card2;

    public CardLayoutForm()
    {
        // Initialize CardLayout
        cardLayout1 = new CardLayout();
        cardLayoutPanel = new Panel();
        cardLayoutPanel.BackColor = Color.White;
        cardLayoutPanel.Dock = DockStyle.Fill;

        // Set container
        cardLayout1.ContainerControl = cardLayoutPanel;

        // Create cards (panels)
        card1 = new Panel();
        card1.BackColor = Color.LightBlue;
        card1.Controls.Add(new Label { Text = "Card 1", AutoSize = true });

        card2 = new Panel();
        card2.BackColor = Color.LightGreen;
        card2.Controls.Add(new Label { Text = "Card 2", AutoSize = true });

        // Add cards to the main panel
        cardLayoutPanel.Controls.Add(card1);
        cardLayoutPanel.Controls.Add(card2);

        // Set card names
        cardLayout1.SetCardName(card1, "FirstCard");
        cardLayout1.SetCardName(card2, "SecondCard");

        // Navigate between cards
        cardLayout1.SelectedCard = "FirstCard";
        cardLayout1.Next(); // Display SecondCard

        // Add to form
        this.Controls.Add(cardLayoutPanel);
    }
}

Common Patterns

Pattern 1: Wizard Interface

Create sequential steps where users navigate forward/backward through cards:

private void NextButton_Click(object sender, EventArgs e)
{
    this.cardLayout1.Next();
}

private void PreviousButton_Click(object sender, EventArgs e)
{
    this.cardLayout1.Previous();
}
Pattern 2: Dropdown Card Selection

Allow users to select cards from a dropdown list:

private void CardSelectionComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    string selectedCardName = CardSelectionComboBox.SelectedItem.ToString();
    this.cardLayout1.SelectedCard = selectedCardName;
}
Pattern 3: Fill Container

Make cards stretch to fill the entire container:

this.cardLayout1.LayoutMode = CardLayoutMode.Fill;

Key Properties

PropertyTypeDescription
SelectedCardstringGets/sets the current visible card by name
LayoutModeCardLayoutModeGets/sets layout mode (Default or Fill)
NextCardIndexintReturns the index of the next card
PreviousCardIndexintReturns the index of the previous card
ContainerControlControlGets/sets the container for the layout

Key Methods

MethodPurpose
First()Display the first card
Next()Display the next card
Previous()Display the previous card
Last()Display the last card
SetCardName(Control, string)Assign a custom name to a card
GetCardName(Control)Get the name of a card
GetCardNames()Get all card names as array
GetComponentFromName(string)Get control by card name
SetMaintainAspectRatio(Control, bool)Configure aspect ratio maintenance

Comments

Markdown supported