syncfusion-winforms-navigation-drawer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWindows Forms Navigation Drawer
Windows Forms 导航抽屉
The Syncfusion Windows Forms Navigation Drawer is a sliding panel menu that comes out from the edge of the window, allowing content to be displayed in a hidden panel. It can be shown by swiping from any of the four screen edges or opened programmatically on demand.
Syncfusion Windows Forms NavigationDrawer是一种从窗口边缘滑出的滑动面板菜单,可将内容展示在隐藏面板中。你可以通过从屏幕四个边缘任意一侧滑动唤出它,也可以按需通过编程方式打开。
When to Use This Skill
何时使用本技能
Use this skill when you need to:
- Implement sliding panel menus from screen edges (left, right, top, or bottom)
- Create hamburger menu navigation with collapsible sidebar panels
- Build hidden panels that slide in with smooth animations
- Add drawer-based navigation to Windows Forms applications
- Configure transition effects (SlideOnTop, Push, Reveal)
- Customize drawer appearance with built-in Office 2016 themes
- Handle drawer events (Opening, Closing, Opened, Closed)
- Toggle drawer visibility programmatically or through user interaction
- Position navigation panels at different screen edges with configurable animations
当你需要完成以下需求时可使用本技能:
- 实现从屏幕边缘(左、右、上、下)弹出的滑动面板菜单
- 创建带可折叠侧边面板的汉堡菜单导航
- 开发带流畅动画滑入效果的隐藏面板
- 为Windows Forms应用添加基于抽屉的导航功能
- 配置过渡效果(SlideOnTop、Push、Reveal)
- 通过内置Office 2016主题自定义抽屉外观
- 处理抽屉事件(Opening、Closing、Opened、Closed)
- 通过编程方式或用户交互切换抽屉可见性
- 将导航面板放置在不同屏幕边缘并配置对应动画
Component Overview
组件概述
Key Features:
- Four position options: Left, Right, Top, Bottom
- Three transition types: SlideOnTop, Push, Reveal
- Built-in themes: Default, Office2016Colorful, Office2016White, Office2016DarkGray, Office2016Black
- Drawer events: Opening, Closing, Opened, Closed
- Configurable animation duration
- Toggle drawer method for programmatic control
- Header and menu items with image support
核心特性:
- 四种位置选项: 左、右、上、下
- 三种过渡类型: SlideOnTop、Push、Reveal
- 内置主题: 默认、Office2016Colorful、Office2016White、Office2016DarkGray、Office2016Black
- 抽屉事件: Opening、Closing、Opened、Closed
- 可配置的动画时长
- 支持编程控制的抽屉切换方法
- 支持图片的头部与菜单项配置
Documentation and Navigation Guide
文档与导航指南
Getting Started
入门指南
📄 Read: references/getting-started.md
Read this reference when you need to:
- Install the NavigationDrawer control via NuGet or designer
- Add the control to a Windows Forms project
- Create a NavigationDrawer instance programmatically
- Add header (DrawerHeader) and menu items (DrawerMenuItem)
- Set up basic drawer dimensions (DrawerWidth, DrawerHeight)
- Add images to menu items
- Configure text and image positioning (TextAlign, TextImageRelation)
- Understand basic sidebar placement
📄 阅读: references/getting-started.md
当你需要完成以下操作时阅读本参考文档:
- 通过NuGet或设计器安装NavigationDrawer控件
- 将控件添加到Windows Forms项目中
- 通过编程方式创建NavigationDrawer实例
- 添加头部(DrawerHeader)和菜单项(DrawerMenuItem)
- 设置基础抽屉尺寸(DrawerWidth、DrawerHeight)
- 为菜单项添加图片
- 配置文本与图片位置(TextAlign、TextImageRelation)
- 了解基础侧边栏放置规则
Drawer Features and Configuration
抽屉功能与配置
📄 Read: references/drawer-features.md
Read this reference when you need to:
- Configure ContentView (main view content)
- Understand DrawerView structure
- Implement transition types (SlideOnTop, Push, Reveal)
- Set drawer position (Left, Right, Top, Bottom)
- Configure drawer dimensions and animation duration
- Use ToggleDrawer method for programmatic control
- Understand the differences between transition effects
📄 阅读: references/drawer-features.md
当你需要完成以下操作时阅读本参考文档:
- 配置ContentView(主视图内容)
- 了解DrawerView结构
- 实现过渡类型(SlideOnTop、Push、Reveal)
- 设置抽屉位置(左、右、上、下)
- 配置抽屉尺寸与动画时长
- 使用ToggleDrawer方法进行编程控制
- 了解不同过渡效果的差异
Customization and Styling
自定义与样式设置
📄 Read: references/customization.md
Read this reference when you need to:
- Apply built-in themes (Default, Office2016Colorful, Office2016White, Office2016DarkGray, Office2016Black)
- Customize drawer item colors (DefaultColor, BackColor, HoverColor)
- Style menu items with custom colors
- Apply consistent visual themes across the application
📄 阅读: references/customization.md
当你需要完成以下操作时阅读本参考文档:
- 应用内置主题(默认、Office2016Colorful、Office2016White、Office2016DarkGray、Office2016Black)
- 自定义抽屉项颜色(DefaultColor、BackColor、HoverColor)
- 使用自定义颜色设置菜单项样式
- 在整个应用中应用统一的视觉主题
Events
事件
📄 Read: references/events.md
Read this reference when you need to:
- Handle Opening event (when expand transition begins)
- Handle Closing event (when collapse transition begins)
- Handle Opened event (when expand transition ends)
- Handle Closed event (when collapse transition ends)
- Respond to drawer state changes
- Cancel drawer operations
- Implement custom logic during transitions
📄 阅读: references/events.md
当你需要完成以下操作时阅读本参考文档:
- 处理Opening事件(展开过渡开始时触发)
- 处理Closing事件(收起过渡开始时触发)
- 处理Opened事件(展开过渡结束时触发)
- 处理Closed事件(收起过渡结束时触发)
- 响应抽屉状态变化
- 取消抽屉操作
- 在过渡过程中实现自定义逻辑
Advanced Usage
高级用法
📄 Read: references/advanced-usage.md
Read this reference when you need to:
- Configure ContentViewContainer with complex controls
- Integrate RichTextBox or other controls in ContentView
- Manage dynamic item addition/removal
- Implement complex item hierarchies
- Optimize performance for large menus
- Follow best practices for drawer implementation
📄 阅读: references/advanced-usage.md
当你需要完成以下操作时阅读本参考文档:
- 为ContentViewContainer配置复杂控件
- 在ContentView中集成RichTextBox或其他控件
- 管理动态项的添加/移除
- 实现复杂的项层级结构
- 为大型菜单优化性能
- 遵循抽屉实现的最佳实践
Quick Start
快速开始
Basic Navigation Drawer
基础导航抽屉
csharp
using Syncfusion.Windows.Forms.Tools;
// Create NavigationDrawer instance
NavigationDrawer navigationDrawer1 = new NavigationDrawer();
this.Controls.Add(navigationDrawer1);
// Set drawer dimensions
navigationDrawer1.DrawerWidth = this.Width / 4;
navigationDrawer1.DrawerHeight = this.Height;
// Set position and transition
navigationDrawer1.Position = SlidePosition.Left;
navigationDrawer1.Transition = Transition.SlideOnTop;
// Add header
DrawerHeader drawerHeader1 = new DrawerHeader();
drawerHeader1.Text = "Menu";
navigationDrawer1.Items.Add(drawerHeader1);
// Add menu items
DrawerMenuItem menuItem1 = new DrawerMenuItem();
menuItem1.Text = "Home";
menuItem1.Image = Image.FromFile(@"home.png");
DrawerMenuItem menuItem2 = new DrawerMenuItem();
menuItem2.Text = "Settings";
menuItem2.Image = Image.FromFile(@"settings.png");
navigationDrawer1.Items.Add(menuItem1);
navigationDrawer1.Items.Add(menuItem2);
// Add content to ContentView
RichTextBox richTextBox = new RichTextBox();
richTextBox.Text = "Main content area";
navigationDrawer1.ContentViewContainer.Controls.Add(richTextBox);csharp
using Syncfusion.Windows.Forms.Tools;
// Create NavigationDrawer instance
NavigationDrawer navigationDrawer1 = new NavigationDrawer();
this.Controls.Add(navigationDrawer1);
// Set drawer dimensions
navigationDrawer1.DrawerWidth = this.Width / 4;
navigationDrawer1.DrawerHeight = this.Height;
// Set position and transition
navigationDrawer1.Position = SlidePosition.Left;
navigationDrawer1.Transition = Transition.SlideOnTop;
// Add header
DrawerHeader drawerHeader1 = new DrawerHeader();
drawerHeader1.Text = "Menu";
navigationDrawer1.Items.Add(drawerHeader1);
// Add menu items
DrawerMenuItem menuItem1 = new DrawerMenuItem();
menuItem1.Text = "Home";
menuItem1.Image = Image.FromFile(@"home.png");
DrawerMenuItem menuItem2 = new DrawerMenuItem();
menuItem2.Text = "Settings";
menuItem2.Image = Image.FromFile(@"settings.png");
navigationDrawer1.Items.Add(menuItem1);
navigationDrawer1.Items.Add(menuItem2);
// Add content to ContentView
RichTextBox richTextBox = new RichTextBox();
richTextBox.Text = "Main content area";
navigationDrawer1.ContentViewContainer.Controls.Add(richTextBox);Common Patterns
常用模式
Pattern 1: Left Slide Panel with Push Transition
模式1:带Push过渡效果的左侧滑动面板
csharp
// Create drawer that pushes content when opened
NavigationDrawer drawer = new NavigationDrawer();
drawer.Position = SlidePosition.Left;
drawer.Transition = Transition.Push;
drawer.DrawerWidth = 250;
drawer.DrawerHeight = this.Height;
drawer.AnimationDuration = 150; // milliseconds
this.Controls.Add(drawer);csharp
// Create drawer that pushes content when opened
NavigationDrawer drawer = new NavigationDrawer();
drawer.Position = SlidePosition.Left;
drawer.Transition = Transition.Push;
drawer.DrawerWidth = 250;
drawer.DrawerHeight = this.Height;
drawer.AnimationDuration = 150; // milliseconds
this.Controls.Add(drawer);Pattern 2: Toggle Drawer with Button Click
模式2:点击按钮切换抽屉
csharp
// Toggle drawer visibility on button click
private void hamburgerButton_Click(object sender, EventArgs e)
{
navigationDrawer1.ToggleDrawer();
}csharp
// Toggle drawer visibility on button click
private void hamburgerButton_Click(object sender, EventArgs e)
{
navigationDrawer1.ToggleDrawer();
}Pattern 3: Themed Drawer with Custom Colors
模式3:带自定义颜色的主题化抽屉
csharp
// Apply Office 2016 theme with custom item colors
navigationDrawer1.Style = NavigationDrawerStyle.Office2016Colorful;
// Customize menu item colors
drawerMenuItem1.DefaultColor = System.Drawing.Color.LightBlue;
drawerMenuItem1.HoverColor = System.Drawing.Color.SkyBlue;
drawerMenuItem1.BackColor = System.Drawing.Color.LightBlue;csharp
// Apply Office 2016 theme with custom item colors
navigationDrawer1.Style = NavigationDrawerStyle.Office2016Colorful;
// Customize menu item colors
drawerMenuItem1.DefaultColor = System.Drawing.Color.LightBlue;
drawerMenuItem1.HoverColor = System.Drawing.Color.SkyBlue;
drawerMenuItem1.BackColor = System.Drawing.Color.LightBlue;Pattern 4: Handle Drawer Events
模式4:处理抽屉事件
csharp
// Subscribe to drawer events
navigationDrawer1.Opening += NavigationDrawer1_Opening;
navigationDrawer1.Opened += NavigationDrawer1_Opened;
navigationDrawer1.Closing += NavigationDrawer1_Closing;
navigationDrawer1.Closed += NavigationDrawer1_Closed;
private void NavigationDrawer1_Opening(object sender, OpeningEventArgs e)
{
// Logic when drawer starts opening
Console.WriteLine("Drawer is opening...");
}
private void NavigationDrawer1_Opened(object sender, EventArgs e)
{
// Logic when drawer is fully open
Console.WriteLine("Drawer opened");
}
private void NavigationDrawer1_Closing(object sender, CancelEventArgs e)
{
// Can cancel closing if needed
// e.Cancel = true;
Console.WriteLine("Drawer is closing...");
}
private void NavigationDrawer1_Closed(object sender, EventArgs e)
{
// Logic when drawer is fully closed
Console.WriteLine("Drawer closed");
}csharp
// Subscribe to drawer events
navigationDrawer1.Opening += NavigationDrawer1_Opening;
navigationDrawer1.Opened += NavigationDrawer1_Opened;
navigationDrawer1.Closing += NavigationDrawer1_Closing;
navigationDrawer1.Closed += NavigationDrawer1_Closed;
private void NavigationDrawer1_Opening(object sender, OpeningEventArgs e)
{
// Logic when drawer starts opening
Console.WriteLine("Drawer is opening...");
}
private void NavigationDrawer1_Opened(object sender, EventArgs e)
{
// Logic when drawer is fully open
Console.WriteLine("Drawer opened");
}
private void NavigationDrawer1_Closing(object sender, CancelEventArgs e)
{
// Can cancel closing if needed
// e.Cancel = true;
Console.WriteLine("Drawer is closing...");
}
private void NavigationDrawer1_Closed(object sender, EventArgs e)
{
// Logic when drawer is fully closed
Console.WriteLine("Drawer closed");
}Pattern 5: Right-Side Drawer with Reveal Transition
模式5:带Reveal过渡效果的右侧抽屉
csharp
// Create drawer that reveals from behind content
NavigationDrawer drawer = new NavigationDrawer();
drawer.Position = SlidePosition.Right;
drawer.Transition = Transition.Reveal;
drawer.DrawerWidth = 300;
drawer.AnimationDuration = 200;
// Add items
DrawerHeader header = new DrawerHeader { Text = "Options" };
drawer.Items.Add(header);
string[] menuItems = { "Profile", "Settings", "Notifications", "Help" };
foreach (string item in menuItems)
{
DrawerMenuItem menuItem = new DrawerMenuItem { Text = item };
drawer.Items.Add(menuItem);
}
this.Controls.Add(drawer);csharp
// Create drawer that reveals from behind content
NavigationDrawer drawer = new NavigationDrawer();
drawer.Position = SlidePosition.Right;
drawer.Transition = Transition.Reveal;
drawer.DrawerWidth = 300;
drawer.AnimationDuration = 200;
// Add items
DrawerHeader header = new DrawerHeader { Text = "Options" };
drawer.Items.Add(header);
string[] menuItems = { "Profile", "Settings", "Notifications", "Help" };
foreach (string item in menuItems)
{
DrawerMenuItem menuItem = new DrawerMenuItem { Text = item };
drawer.Items.Add(menuItem);
}
this.Controls.Add(drawer);Key Properties
核心属性
| Property | Type | Description |
|---|---|---|
| | Drawer sliding position: Left, Right, Top, Bottom |
| | Animation type: SlideOnTop, Push, Reveal |
| | Width of the drawer panel |
| | Height of the drawer panel |
| | Duration in milliseconds for drawer animation |
| | Visual theme: Default, Office2016Colorful, etc. |
| | Collection of DrawerHeader and DrawerMenuItem objects |
| | Container for main content area controls |
| 属性 | 类型 | 描述 |
|---|---|---|
| | 抽屉滑动位置:Left、Right、Top、Bottom |
| | 动画类型:SlideOnTop、Push、Reveal |
| | 抽屉面板宽度 |
| | 抽屉面板高度 |
| | 抽屉动画时长,单位为毫秒 |
| | 视觉主题:默认、Office2016Colorful等 |
| | DrawerHeader与DrawerMenuItem对象的集合 |
| | 主内容区域控件的容器 |
Key Methods
核心方法
| Method | Description |
|---|---|
| Toggles drawer visibility (open ↔ closed) |
| 方法 | 描述 |
|---|---|
| 切换抽屉可见性(打开 ↔ 关闭) |
Key Events
核心事件
| Event | Description |
|---|---|
| Occurs when expand transition begins |
| Occurs when expand transition ends |
| Occurs when collapse transition begins (cancelable) |
| Occurs when collapse transition ends |
| 事件 | 描述 |
|---|---|
| 展开过渡开始时触发 |
| 展开过渡结束时触发 |
| 收起过渡开始时触发(可取消) |
| 收起过渡结束时触发 |
Related Components
相关组件
- TreeNavigator - For hierarchical tree-based navigation
- Wizard - For multi-step workflows and wizards
- TabControlAdv - For tabbed navigation interfaces
- TreeNavigator - 用于层级树形结构导航
- Wizard - 用于多步工作流与向导
- TabControlAdv - 用于标签式导航界面