WinForm 中 VScrollBar Maximum 问题

       最近在做一个鼠标经过弹出 TreeView  面板功能 , 要求鼠标离开TreeView区域,隐藏面板。 功能如期开发,其中当TreeView 出现滚动条时,鼠标经过TreeView中的滚动条时,提前隐藏。 原因: TreeView 中将 滚动区域视为非已部份。因此鼠标经过该区域,触发  MouseLeave 事件,但滚动区域没有显示声明 MouseEnter , MouseLeave 的入口 , 因此无法在触发MouseLeave(隐藏动作) 后即时触发 滚动区域的MouseEnter(显示面版)事件。

 

因此禁用TreeView Scroll 功能,外层使用Panel, Panel 同时禁用Scroll 功能(只做容器), Scroll 功能由 VScrollBar 实现滚动功能,通过设置 TreeView.Top 值。

因此,需要做如下工作:

1. 手动计算TreeView 内容高度,并将高度值赋给 TreeView.Height.

2.将VScrollBar Maxnum 值设为 TreeView.Height - Panel.Height

3. 设置VScrollBar 中的ValueChange 事件,将 value 赋给 TreeView.top 

 

private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            //e.NewValue 值达不到 vScrollBar1.Maximum ???
            if (vScrollBar1.Maximum - e.NewValue <= 10)
            {
                treeView1.Top = vScrollBar1.Maximum * -1;
            }
            else {
                treeView1.Top = e.NewValue * -1;
            }
      }

 

 

其中 VScrollBar  Value 值最大时,总是小预设的 Maximum值,因此即使滚动到底部,也总有一部份内容不可视。因此,采用折中方式,如果滚动到底部时,VScrollBar Value  值 与 Maximum之差小于 10 px , 将 当前滚动值视为 Maximum 值

 private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            //e.NewValue 值达不到 vScrollBar1.Maximum ???
            if (vScrollBar1.Maximum - e.NewValue <= 10)
            {
                treeView1.Top = vScrollBar1.Maximum * -1;
            }
            else {
                treeView1.Top = e.NewValue * -1;
            }
        }

 

转载于:https://www.cnblogs.com/a_bu/p/4054895.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WinForm是一种在Windows操作系统上开发桌面应用程序的技术框架,它基于.NET框架,使用C#编程语言。WinForm文文档是针对国开发者提供的WinForm框架相关的文档和教程,以文语言编写的技术资料。 WinForm文文档包括了WinForm框架的概述、使用方法、常用控件的介绍和使用示例、事件处理、数据绑定、图形界面设计等方面的内容。它提供了标准化的编程接口和类库,帮助开发者更快地开发出功能完善、交互友好的桌面应用程序。 在WinForm文文档,可以学习如何使用各种控件,如按钮、文本框、列表框、下拉框等,来构建用户界面。还可以学习如何通过事件处理来响应用户的操作,以及如何进行数据的绑定,实现界面与数据的交互。同时,WinForm文文档也会介绍如何使用图形界面设计器来进行可视化设计,方便开发者进行界面布局和样式设计。 通过阅读WinForm文文档,开发者可以快速掌握WinForm框架的使用方法,了解如何使用C#语言进行桌面应用程序的开发。文文档的编写可以帮助国开发者更好地理解和使用WinForm框架,并提供了一种便捷的学习途径。无论是初学者还是有经验的开发者,都可以从WinForm文文档获取所需的开发知识和技术支持。 ### 回答2: WinForm 是 Microsoft .NET Framework 提供的一种桌面应用程序开发框架,使用 C# 编写,可以在 Windows 操作系统上构建各种功能丰富的用户界面。 WinForm 文文档可以为使用者提供全面详尽的开发指南与技术文档。文文档可以帮助开发者更好地理解 WinForm 框架的基本概念、设计原则和开发流程。 首先,文文档可以介绍 WinForm 的基本概念,包括窗体、控件、事件等等。通过明确这些基本概念,开发者可以更好地了解 WinForm 的工作原理和开发模式。 其次,文文档可以详细介绍各种常用的 WinForm 控件,如按钮、文本框、列表框等等。文档可以介绍每种控件的属性、方法和事件,并给出实际使用示例,帮助开发者快速掌握控件的使用方法。 此外,文文档还可以介绍如何进行窗体的布局、界面的美化、数据的绑定等高级功能。开发者可以了解这些高级功能的实现原理和具体步骤,使应用程序更加灵活和易于维护。 另外,文文档还可以提供 WinForm 开发的常见问题解答和调试技巧。开发者可以通过文档查找遇到的问题的解决方案,加快开发进度。 总之,WinForm 文文档是开发者学习和使用 WinForm 框架的重要参考资料。它可以帮助开发者迅速入门,掌握框架的基本概念和使用技巧,提高开发效率,更好地构建功能强大且用户友好的桌面应用程序。 ### 回答3: WinForm是一个用于创建Windows应用程序的GUI框架。它是微软公司在.NET平台上推出的一种应用程序开发技术,提供了丰富的控件和功能,方便开发人员快速开发出具有良好用户界面的Windows应用程序。 WinForm文文档是指针对WinForm框架的使用和开发进行详细说明的文档。这些文档通常由开发人员或技术团队编写,旨在帮助开发人员理解和掌握WinForm的各种功能和方法。 WinForm文文档通常包含了WinForm框架的介绍、环境搭建、控件使用、事件处理、数据绑定、布局管理等内容。在文档,开发人员可以学习到如何创建窗体、添加控件、设置属性、处理事件等基础知识,以及如何进行布局管理、数据绑定、菜单栏、工具栏等高级功能的开发。 WinForm文文档的编写需要结合实际案例和代码示例,以便开发人员能够更好地理解和实践。文档通常会提供大量的示例代码和详细的解释,帮助开发人员一步步完成一个功能的实现。 拥有WinForm文文档可以帮助开发人员更快速地上手WinForm框架,减少开发过程的困惑和问题,提高开发效率。同时,文档还可以作为日后开发过程的参考手册,方便查找和回顾相关知识。 总之,WinForm文文档是一种帮助开发人员学习和掌握WinForm框架的重要资源,对于开发Windows应用程序具有重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值