解决frmMain窗体的Dock组件根据NavBarControl自动同步缩放
解决frmMain窗体的Dock组件根据NavBarControl自动同步缩放接上文:关于NavBarControl点击ExpandButton缩放后不能控制Dock组件的问题

解决方案2:不隐藏ShowExpandButton实现NavBarControl自动缩放。


打开frmMain.cs文件,添加以下代码:
C# Code:
//NavBarControl尺寸改变时的标记
private bool _OnSizeChangingNavBar = false;
private void navBarControl1_SizeChanged(object sender, EventArgs e)
{
if (_OnSizeChangingNavBar) return;
if (_OnSizeChangingDock) return;
try
{
_OnSizeChangingNavBar = true;
if (dockPanel1.Visibility == DockVisibility.Visible && navBarControl1.Visible && navBarControl1.Width > 0)
{
dockPanel1.Width = navBarControl1.Width;
}
}
finally
{
_OnSizeChangingNavBar = false;
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
private bool _OnSizeChangingNavBar = false;
private void navBarControl1_SizeChanged(object sender, EventArgs e)
{
if (_OnSizeChangingNavBar) return;
if (_OnSizeChangingDock) return;
try
{
_OnSizeChangingNavBar = true;
if (dockPanel1.Visibility == DockVisibility.Visible && navBarControl1.Visible && navBarControl1.Width > 0)
{
dockPanel1.Width = navBarControl1.Width;
}
}
finally
{
_OnSizeChangingNavBar = false;
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
修改原有dockPanel1_SizeChanged事件的代码:
C# Code:
//Doc组件尺寸改变时的标记
private bool _OnSizeChangingDock = false;
//frmMain.dockPanel1_SizeChanged
private void dockPanel1_SizeChanged(object sender, EventArgs e)
{
if (_OnSizeChangingDock) return;
try
{
this.SuspendLayout();
_OnSizeChangingDock = true;
navBarControl1.Dock = DockStyle.None;
navBarControl1.Left = xtraScrollableControl1.DisplayRectangle.X;//滚动容器的实际坐标
navBarControl1.Top = xtraScrollableControl1.DisplayRectangle.Y;//滚动容器的实际坐标
navBarControl1.NavigationPaneGroupClientHeight = 100;//导航按钮展开显示明细菜单区域的高度。
navBarControl1.Height = navBarControl1.Groups.Count * 70 + navBarControl1.NavigationPaneGroupClientHeight;//手工指定NavBar组件的高度
navBarControl1.OptionsNavPane.ShowOverflowButton = false;//不显示底部的动态扩展按钮
navBarControl1.OptionsNavPane.ShowOverflowPanel = false;//不显示底部的动态扩展按钮区域
xtraScrollableControl1.HorizontalScroll.Visible = false;//不显示横向滚动条
//若NavBar显示垂直滚动条,要预留明细区域的滚动条,约25个像素
if (xtraScrollableControl1.VerticalScroll.Visible)
navBarControl1.Width = dockPanel1.Width - 25;//右侧预留边距
else
navBarControl1.Width = dockPanel1.Width - 5;//右侧预留边距
//NavBar全屏自适应高度
if (dockPanel1.ClientSize.Height - 60 > navBarControl1.Height)
navBarControl1.Height = dockPanel1.ClientSize.Height - 60;
}
finally
{
_OnSizeChangingDock = false;
this.ResumeLayout();
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
//Doc组件尺寸改变时的标记
private bool _OnSizeChangingDock = false;
//frmMain.dockPanel1_SizeChanged
private void dockPanel1_SizeChanged(object sender, EventArgs e)
{
if (_OnSizeChangingDock) return;
try
{
this.SuspendLayout();
_OnSizeChangingDock = true;
navBarControl1.Dock = DockStyle.None;
navBarControl1.Left = xtraScrollableControl1.DisplayRectangle.X;//滚动容器的实际坐标
navBarControl1.Top = xtraScrollableControl1.DisplayRectangle.Y;//滚动容器的实际坐标
navBarControl1.NavigationPaneGroupClientHeight = 100;//导航按钮展开显示明细菜单区域的高度。
navBarControl1.Height = navBarControl1.Groups.Count * 70 + navBarControl1.NavigationPaneGroupClientHeight;//手工指定NavBar组件的高度
navBarControl1.OptionsNavPane.ShowOverflowButton = false;//不显示底部的动态扩展按钮
navBarControl1.OptionsNavPane.ShowOverflowPanel = false;//不显示底部的动态扩展按钮区域
xtraScrollableControl1.HorizontalScroll.Visible = false;//不显示横向滚动条
//若NavBar显示垂直滚动条,要预留明细区域的滚动条,约25个像素
if (xtraScrollableControl1.VerticalScroll.Visible)
navBarControl1.Width = dockPanel1.Width - 25;//右侧预留边距
else
navBarControl1.Width = dockPanel1.Width - 5;//右侧预留边距
//NavBar全屏自适应高度
if (dockPanel1.ClientSize.Height - 60 > navBarControl1.Height)
navBarControl1.Height = dockPanel1.ClientSize.Height - 60;
}
finally
{
_OnSizeChangingDock = false;
this.ResumeLayout();
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
关于NavBarControl点击ExpandButton缩放后不能控制Dock组件的问题
使用Dock.Fill控件被遮挡解决方法(将被遮挡的组件设置为顶层既可解决)
解决CSFramework企业版v4.x旗舰版v5.0设置皮肤不同步BUG
解决Winform背景图片闪烁的问题
CSFrameworkV6旗舰版 | 基础资料窗体改装主从子表(多级明细表)解决方案|C/S开发框架
主窗体导航菜单NavbarControl 介绍 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
VS.NET 窗体继承后按钮或组件的位置不正确解决方案|C/S开发框架
窗体的自定义按钮权限控制-扩展权限按钮详解
主窗体的导航菜单及树结构菜单实现多语言(翻译英文越南文)
新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解
VS.NET 窗体继承 - 按钮组件隐藏或位置不正确解决方案
生成的项目模块(Project)添加到VS解决方案 - C/S框架三层架构代码生成器操作指南
解决方案:扩展按钮自定义权限没有出现在权限树给用户勾选
解决组件被遮挡的问题(表格的滚动条不显示或隐藏)
V4.0-设置多语言,主窗体的菜单顺序乱了
增值功能:数据字典自动生成流水号解决方案
关于NavBarControl点击ExpandButton缩放后不能控制Dock组件的问题
使用Dock.Fill控件被遮挡解决方法(将被遮挡的组件设置为顶层既可解决)
解决CSFramework企业版v4.x旗舰版v5.0设置皮肤不同步BUG
解决Winform背景图片闪烁的问题
CSFrameworkV6旗舰版 | 基础资料窗体改装主从子表(多级明细表)解决方案|C/S开发框架
主窗体导航菜单NavbarControl 介绍 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
VS.NET 窗体继承后按钮或组件的位置不正确解决方案|C/S开发框架
窗体的自定义按钮权限控制-扩展权限按钮详解
主窗体的导航菜单及树结构菜单实现多语言(翻译英文越南文)
新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解
VS.NET 窗体继承 - 按钮组件隐藏或位置不正确解决方案
生成的项目模块(Project)添加到VS解决方案 - C/S框架三层架构代码生成器操作指南
解决方案:扩展按钮自定义权限没有出现在权限树给用户勾选
解决组件被遮挡的问题(表格的滚动条不显示或隐藏)
V4.0-设置多语言,主窗体的菜单顺序乱了
增值功能:数据字典自动生成流水号解决方案
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
