当前位置: 首页 > news >正文

C#中实现左侧折叠导航菜单的示例代码

基于C#实现左侧折叠导航菜单的完整技术方案涵盖WinForms和WPF两种主流开发框架结合界面设计、交互逻辑和工程实践一、WinForms实现方案1. 基础控件组合核心控件选择Panel容器用于包裹折叠内容Button/Label作为菜单触发器TreeView展示多级菜单结构SplitContainer实现左右分栏布局示例代码12345678910111213141516171819202122// 初始化菜单面板Panel menuPanel newPanel {Dock DockStyle.Left,Width 200,BackColor Color.FromArgb(240, 240, 240)};// 创建折叠按钮Button toggleBtn newButton {Text ☰ 菜单,Dock DockStyle.Top,Font newFont(微软雅黑, 10, FontStyle.Bold),BackColor Color.DimGray};toggleBtn.Click (s, e) {menuPanel.Width menuPanel.Width 200 ? 60 : 200;this.Invalidate();// 触发重绘};// 添加到窗体this.Controls.Add(toggleBtn);this.Controls.Add(menuPanel);2. 动画效果实现通过定时器实现平滑展开/折叠12345678910111213141516171819202122Timer aniTimer newTimer { Interval 20 };inttargetWidth 200;intcurrentWidth 60;voidAnimateResize() {if(menuPanel.Width targetWidth) {menuPanel.Width 5;toggleBtn.Text ☰ 菜单;}elseif(menuPanel.Width currentWidth) {menuPanel.Width - 5;toggleBtn.Text ▶ 内容;}else{aniTimer.Stop();}}// 触发时启动动画toggleBtn.Click (s, e) {targetWidth menuPanel.Width 200 ? 60 : 200;currentWidth menuPanel.Width;aniTimer.Start();};3. 多级菜单实现使用TreeView控件构建层级结构12345678TreeNode node1 newTreeNode(系统管理, 0, 0);TreeNode node1_1 newTreeNode(用户管理, 1, 1);TreeNode node1_2 newTreeNode(权限设置, 2, 2);node1.Nodes.Add(node1_1);node1.Nodes.Add(node1_2);treeView1.Nodes.Add(node1);treeView1.ExpandAll();二、WPF实现方案1. XAML布局设计123456789101112131415161718192021222324252627282930313233343536373839404142Windowx:ClassFoldableMenu.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationTitle折叠导航菜单Height450Width800GridGrid.ColumnDefinitionsColumnDefinitionWidthAuto/ColumnDefinitionWidth*//Grid.ColumnDefinitions!-- 左侧菜单 --DockPanelx:NameMenuDockGrid.Column0Width200Background#2D2D30ButtonDockPanel.DockTopContent☰ 菜单ForegroundWhiteFontSize16Margin5ClickToggleMenu/ExpanderHeader系统管理IsExpandedFalseExpander.HeaderTemplateDataTemplateTextBlockText{Binding}ForegroundLightBlueMargin5//DataTemplate/Expander.HeaderTemplateListBoxListBoxItemContent用户管理/ListBoxItemContent权限设置//ListBox/Expander/DockPanel!-- 主内容区 --GridGrid.Column1TextBlockText主内容区域FontSize24VerticalAlignmentCenterHorizontalAlignmentCenter//Grid/Grid/Window2. 动态菜单绑定通过ViewModel绑定数据12345678910111213141516171819publicclassMenuModel : INotifyPropertyChanged {privatebool_isExpanded;publicboolIsExpanded {get _isExpanded;set{_isExpanded value;OnPropertyChanged(nameof(IsExpanded));}}// 实现INotifyPropertyChanged接口publiceventPropertyChangedEventHandler PropertyChanged;protectedvoidOnPropertyChanged(stringprop) {PropertyChanged?.Invoke(this,newPropertyChangedEventArgs(prop));}}// XAML绑定Expander Header系统管理IsExpanded{Binding IsExpanded}3. 动画效果实现使用Storyboard实现折叠动画123456789101112131415161718192021Window.ResourcesStoryboard x:KeyCollapseAnimDoubleAnimation Storyboard.TargetNameMenuDockStoryboard.TargetPropertyWidthFrom200To60Duration0:0:0.3//StoryboardStoryboard x:KeyExpandAnimDoubleAnimation Storyboard.TargetNameMenuDockStoryboard.TargetPropertyWidthFrom60To200Duration0:0:0.3//Storyboard/Window.Resources// 触发动画privatevoidToggleMenu(objectsender, RoutedEventArgs e) {Storyboard sb (MenuDock.Width 200)? (Storyboard)FindResource(CollapseAnim): (Storyboard)FindResource(ExpandAnim);sb.Begin(this);}参考代码 C#左侧折叠导航菜单 youwenfan.com/contentcsb/111938.html三、进阶功能实现1. 图标与样式定制图标集成使用Image控件或字体图标库如FontAwesome悬停效果通过Style.Triggers实现颜色变化12345678StyleTargetTypeButtonSetterPropertyBackgroundValueTransparent/Style.TriggersTriggerPropertyIsMouseOverValueTrueSetterPropertyBackgroundValue#404040//Trigger/Style.Triggers/Style2. 状态持久化使用ApplicationSettings保存展开状态123456// 保存状态Properties.Settings.Default.MenuWidth menuDock.Width;Properties.Settings.Default.Save();// 恢复状态menuDock.Width Properties.Settings.Default.MenuWidth;3. 多分辨率适配WPF自适应布局使用Viewbox控件自动缩放WinForms动态调整监听Resize事件123privatevoidForm_Resize(objectsender, EventArgs e) {menuPanel.Width this.ClientSize.Width / 4;}四、第三方库推荐库名称特点适用场景HslCommunication提供现成的导航控件支持主题切换企业级应用开发DevExpress WinForms包含Ribbon控件和高级布局管理器复杂业务系统MaterialDesignInXaml实现Material Design风格菜单现代化UI设计五、工程实践建议模块化设计将菜单项封装为独立UserControl权限控制通过角色标识动态加载菜单项性能优化虚拟化技术处理大量菜单项WPF的VirtualizingStackPanel测试方案多分辨率测试1920x1080/1366x768等快速点击防抖处理低配环境性能测试到此这篇关于C#实现左侧折叠导航菜单的示例代码的文章就介绍到这了
http://www.rkmt.cn/news/1372587.html

相关文章:

  • 2026 四川热轧钢管怎么选?西南 TOP 经销商维度拆解:行情、价格与采购指南 - 四川盛世钢联营销中心
  • 为什么别人能跑通RAG+Agent而你总超限?DeepSeek配额底层机制(含quota_limit、burst_capacity、reset_window三参数深度解读)
  • Kubernetes边缘计算部署方案:将K8s延伸到边缘节点
  • phpMyAdmin CVE-2014-8959文件包含漏洞实战解析(Windows平台)
  • Linux端口敲门原理与knockd实战部署指南
  • Kubernetes机器学习平台搭建:构建企业级ML训练环境
  • 2026 四川热轧钢板怎么选?西南 TOP 经销商维度拆解:行情、价格与采购指南 - 四川盛世钢联营销中心
  • 软工第三次
  • 2026年AI论文写作软件盘点:12款神器助你高效完成去痕改写、润色和过检
  • 网络技术05-TCP拥塞控制算法——从CUBIC到BBR的性能进化
  • Python算法基础篇之深度优先搜索(DFS)
  • 前端可访问性:自动化测试工具与实践指南
  • DeepSeek V3发布即颠覆:实测对比V2的12项关键指标,哪些场景必须立刻升级?
  • 用ChatGPT做动态仪表盘?先绕过这8个API响应陷阱——附12个经生产环境验证的Viz-Ready Prompt模板
  • Gemini SQL生成准确率暴跌87%?揭秘模型幻觉的4个致命诱因及实时校验方案
  • 每日大赛场景下如何快速接入多模型API提升开发效率
  • Linux端口敲门实战:用knockd为SSH加一道协议层保险
  • DeepSeek-R1模型压缩到<380MB还能保持98.7%对话准确率?——边缘设备量化微调四步法首次公开
  • 初创公司如何借助Taotoken低成本启动AI产品开发
  • Kubernetes可观测性体系构建:全面监控与故障排查指南
  • 登录+注册 每一分钟 最多请求5次
  • 上海空调移机维修拆装靠谱推荐、鑫诚制冷嘉一制冷本地同城移机拆装维修加氟上门服务 - 卓一科技
  • 江苏储能电池箱实力厂商排行 品质保障维度解析 - 奔跑123
  • 【信息科学与工程学】计算机科学与自动化——第六十二篇 虚拟化算法02
  • 江苏自动化设备外壳厂家实力排行:口碑与硬实力双维度盘点 - 奔跑123
  • 广州搬家行业深度科普:从“黑幕”到“避坑”,认准专业的广州市顺风搬家服务有限公司 - 生活服务
  • 告别低效写作:盘点2026年顶尖配置的的降AI率网站
  • JAVA:字符串拼接
  • 【AI翻译避坑指南】:92%用户忽略的5个ChatGPT翻译陷阱(含术语一致性崩塌、文化错译、被动语态误判),附可直接复用的Prompt模板
  • DeepSeek总结的DuckDB动态函数应用插件